約 4,366,565 件
https://w.atwiki.jp/swgstring/pages/52.html
タグ 翻訳待ち building_name.stf 177 bunker_corellia_murmurs_lab_n an unidentified bunker building_name.stf 175 bunker_corellia_tomi_jinsin A Bunker building_name.stf 174 corellia_greck_hq_n Greck Headquarters building_name.stf 184 laminasteel_augmented_group_base Nightstrike Soldier Hegemony Base building_name.stf 176 merchant_tent_tato_s01 Tent building_name.stf 179 military_base_shed_imperial_style_cloning_facility_s01_d Imperial Cloning Outpost building_name.stf 178 military_base_shed_imperial_style_cloning_facility_s01_n Imperial Cloning Outpost building_name.stf 183 military_base_shed_rebel_style_cloning_facility_s01_d Rebel Cloning Outpost building_name.stf 182 military_base_shed_rebel_style_cloning_facility_s01_n Rebel Cloning Outpost building_name.stf 180 military_rebel_clone_tent_large_d Rebel Medic Station building_name.stf 181 military_rebel_clone_tent_small_d Rebel Medic Station building_name.stf 186 planet_base_register_d Planetary Base Register building_name.stf 185 planet_base_register_n planet_base_register
https://w.atwiki.jp/i_ro/pages/169.html
This article or section is in need of attention from an expert on the subject.Please help recruit one or improve this article yourself. See the talk page for details. For a pre-Renewal version of this article, click here. Job Base(s) Dancer Job Type 2-2 Transcendent Changes At Juno× Number of Skills 6 Total Skill Points 31 Total Quest Skills 0 Job Bonuses STR AGI VIT INT DEX LUK +6 +14 +2 +5 +16 +2 +← クリックで目次を開く Overview Job Change Guide BuildsPvM/WoE Full Support Marionette Control Slave Pure WoE AGI PvM Equipment Class DataSkills Job Bonuses ASPD See Also External Links Overview Everybody loves the Gypsy s dancing, especially her enemies. It s the last thing they see before they go to their graves with a smile on their lips and an arrow through their hearts. The Gypsy is so alluring that hundreds of acts of heroism (and foolishness) have been performed in her name. With more lithe and agile bodies granted by the gods, Gypsies are hard to resist especially when one begins her dance. Not a single drop of sweat can be seen. Every dance and movement seemingly effortless. Graceful dance is her specialty, dancing gracefully to lure the monster to its death with the newly acquired Arrow Vulcan× and Tarot Card of Fate× skills. Job Change Guide To become a Gypsy, you must find a book called the Book of Ymir in Sage Castle , Juno×. The book will lead you to Valhalla so you can change your job through the Lord Knight job NPC×. Also you must reach at least job level 40 as a transcendent 1st class character. 1.Sage Castle is located at 11 o clock direction (yuno 88,320) in Juno. 2. Book of Ymir is located inside a room behind an NPC called Metheus Sylphe (yuno_in02 88,164). 3.The Book of Ymir (yuno_in02 94,206) will teleport you to Valhalla. 4.Find and talk to a job NPC suited to your 2nd class. Builds PvM/WoE STR× 1 AGI× 1 VIT× 80-100 (final) INT× 2x-5x (final) DEX× 99 (base) LUK× 1 The staple Gypsy build for people who like to mix PvM× and WoE×. This build takes high DEX to capitalize on the skill Arrow Vulcan, and high VIT for survivability and status resistance. Remaining points go in INT to boost their SP× pool and regen. The high natural DEX of Gypsies gives this build easy access to instant cast. Full Support STR 50+ (base) AGI 1 VIT 90-100 (final) INT 60-90 (final) DEX 1-4 (base) LUK 1 This build focuses on high survivability at the cost of being a pure leech or Party character. High VIT for (nearly) Stun× immunity, high INT for excellent SP, plus great SP Song effectiveness. Keep in mind that INT also increases your recovery rate from SP restoring items. STR for a higher weight limit to carry lots of potions during Sieges. You may want to increase DEX for a more effective Slow Grace, but don t go for more than 4 base DEX, which adds a cheap Slow Grace× bonus. Cast time of Tarot Card of Fate is poor and you might get interrupted, but you should be in a Bard s Magic Strings× if you plan to use it. There are about 20 skill points left to play around with since you won t get Arrow Vulcan due to your low DEX and Slinging Arrow× is a less time-robbing skill to inflict statuses on your enemies. Instead you can get more ensembles or you might want more solo songs. Marionette Control Slave STR 1 AGI 1 VIT 1x-3x INT 1x-5x DEX 8x-9x LUK 8x-9x This build s main purpose is to use Marionette Control× on Blacksmiths, Alchemists, and Assassin Crosses to maximize their success rates. It may also be set-up to serve as a Gypsy s Kiss× and/or Mental Sensing× slave. Since the build has DEX, it is possible for it to level itself, especially if it is partied with a Priest class. While it can be used in WoE, it lacks the higher VIT that is generally preferred. Being a slave build, this build is not recommended as a main character. Pure WoE STR 1 AGI 9x (base) VIT 90-100 (final) INT 1 DEX x (remaining points) LUK 1 Similar to the Full Support build, this build is about maximum survivability and is also incapable of leveling itself. While the VIT is the same, the build drops INT since it won t be using Gypsy s Kiss much, and drops the STR due to the availability of Increase Weight Limit tickets in the Kafra Shop×. Instead this build favors high AGI in order to reduce the ASPD× delay of Dazzler× when in a strong Magic Strings, reduce movement speed more via Slow Grace, and potentially flee melee attackers. Leftover points go into DEX in order to somewhat relieve the build s poor cast times. AGI PvM STR 1 AGI 7x-9x VIT 1x-5x INT 2x-5x DEX 99 (base) LUK 1 This build sacrifices the VIT-based survivability that the other builds use in favor of AGI and Flee×. DEX is maxed for Arrow Vulcan, while INT is used for SP. Depending on personal preference, builds can have higher AGI or put some points in VIT. The investment in AGI, combined with Arrow Vulcan s burst damage, gives this build the ability to solo mid-level monsters with little trouble, but doesn t help much in high-level dungeons. In party situations the build is similar to others, but lacks their survivability. (With the possible exception of Nameless Island, the only endgame dungeon where Flee is viable.) In WoE, this build performs poorly due to its low HP× and status resistance. Perhaps its only redeeming factor is to Slow Grace enemies entering a Classical Pluck×. In terms of skills, AGI Gypsies use skill sets similar to their PvM/WoE cousins. Arrow Vulcan is the staple for leveling, Dazzler, Slow Grace, and Tarot Card of Fate for WoE. Slinging Arrow can be effective if used properly, due to the build s high DEX and AGI. Classical Pluck can be used but is better left to the VIT builds. Remaining skill points can be distributed depending on personal preference and what the character will be used for. This build is rarely used due to the Dancer class focus on being a WoE support character. While it could potentially be called a pure Slow Grace build, the difference isn t significant enough to justify the downsides in PvP/WoE. Equipment Class Data Skills For more information about Dancer skills, click here. Skill Description Levels Type Arrow Vulcan× Strike targets multiple times, causing up to 1,200% damage. Consumes only 1 arrow. 10 Offensive Hermode s Rod× Create a large area near portals during WoE that strip buffs from allies yet block all magic attacks against those in it s AoE. 5 Active Longing for Freedom× Enables the Gypsy to move and attack in AoE of an Ensemble she is performing with a Bard/Minstrel. 5 Active Marionette Control× Give up to half of the Gypsy s stats to another player in party. 1 Active Sheltering Bliss× Create a 9x9 area with a Minstrel that prevents everyone from entering, but doesn t block ranged attacks or magic. 5 Active Tarot Card of Fate× Up to a 40% chance to cause 1 of 14 random effects on a target. 5 Active Job Bonuses Stat\Amount +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 STR 2 6 20 35 50 66 AGI 4 11 12 13 25 31 38 47 52 57 61 62 67 70 VIT 17 54 INT 8 26 39 53 60 DEX 1 9 14 15 18 23 24 28 33 41 43 45 49 58 65 69 LUK 27 63 ASPD This article or section is in need of attention from an expert on the subject.Please help recruit one or improve this article yourself. See the talk page for details. See Also External Links Gypsy Job Info at the iRO page Gypsy Skill Tree at Himeyasha s Skill Simulator -Dancer ・ Gypsy ・ Wanderer Dancer ・ Gypsy ・ Wanderer 2nd ClassSkills Solo Skills Amp× ・ Charming Wink× ・ Dance Lessons× ・ Dazzler× ・ Encore× ・ Focus Ballet× (Perfect Tablature×) ・ Gypsy s Kiss× (Song of Lutie×) ・ Hip Shaker× ・ Lady Luck× (Magic Strings×) ・ Slinging Arrow× ・ Slow Grace× (Impressive Riff×) Ensemble Skill×s Acoustic Rhythm× ・ Battle Theme× ・ Classical Pluck× ・ Down Tempo× ・ Harmonic Lick× ・ Lullaby× ・ Mental Sensing× ・ Power Cord× ・ Ragnarok× TranscendentSkills Solo Skills Arrow Vulcan× ・ Marionette Control× ・ Tarot Card of Fate× ・ Longing for Freedom× ・ Hermode s Rod× Ensemble Skills Sheltering Bliss× 3rd ClassSkills Solo Skills Voice Lessons× ・ Deep Sleep Lullaby× ・ Reverberation× ・ Metallic Sound× ・ Dominion Impulse× ・ Lover Symphony× ・ Moonlight Serenade× ・ Swing Dance× ・ Circling Nature× ・ Death Valley× ・ Despair Song× ・ Siren s Voice× ・ Improvised Song× ・ Gloomy Shyness× ・ Severe Rainstorm× Chorus Skill×s Great Echo× ・ Dances with Wargs× ・ Song of Mana× ・ Lerad s Dew× ・ Saturday Night Fever× ・ Warcry from Beyond× ・ Sinking Melody× ・ Destruction Song× ・ Infinite Humming× Quests Dancer Job Change Guide ・ Dancer Skill Quest ・ Rebirth Walkthrough ・ Wanderer Job Change Guide Weapons× Bow× ・ Whip× ・ Dagger× -Classes of Ragnarok Online Classes of Ragnarok Online Novice Class Novice ・ High Novice ・ Super Novice First Class / High First Class Acolyte ・ Archer ・ Mage ・ Merchant ・ Swordman ・ Thief Second Class Priest ・ Monk ・ Hunter ・ Bard ・ Dancer ・ Wizard ・ Sage ・ Blacksmith ・ Alchemist ・ Knight ・ Crusader ・ Assassin ・ Rogue Transcendent Second Class High Priest ・ Champion ・ Sniper ・ Minstrel ・ Gypsy ・ High Wizard ・ Scholar ・ Mastersmith ・ Biochemist ・ Lord Knight ・ Paladin ・ Assassin Cross ・ Stalker Third Class Arch Bishop ・ Sura ・ Ranger ・ Maestro ・ Wanderer ・ Warlock ・ Sorcerer ・ Mechanic ・ Geneticist ・ Rune Knight ・ Royal Guard ・ Guillotine Cross ・ Shadow Chaser Expanded Class Gunslinger ・ Ninja ・ TaeKwon Kid Expanded Second Class TaeKwon Master ・ Soul Linker ・ Kagerou ・ Oboro ・ Rebel× Doram Summoner Categories Pages needing expert attention | Gypsy | Classes | Dancer
https://w.atwiki.jp/ff12izjs/
Final Fantasy XII International Zodiac Job System ファイナルファンタジー12 インターナショナル ゾディアック ジョブ システムのまとめwikiです。 どなたでも編集可能ですのでみんなでまたーり更新していきましょう。 編集が苦手な方はコメントに情報提供でもOKです。 ゲーム中わからない事があったら、まずFAQ(良くある質問)に目を通してみて下さい。 仕様 タイトル FFXII International Zodiac Job System ジャンル RPG ハード PlayStation 2 発売日 2007年08月09日 定価 6,800円 CERO B(12才以上推奨) IZJS版 アルティマニアは07/09/06発売予定 リンク FFXII Official Site FFXII IZJS Official Site 更新履歴 最新10件 取得中です。 人気のページ 5件 武器 ジョブ 各種検証 ライセンス 魔法 更新メモ wikiを更新した際のメモとしてどうぞ。(情報提供などはコメントへ) 今回期間限定要素って無いのかな?有ったら個別に纏まってると便利かも。あとライセンス欄に全部はきついだろうから主要アビとかも。 -- (名無しさん) 2007-09-09 02 26 39 キャラクター紹介。モーションの速度等まとまってると便利そう。あとは逃したら取り返しのつかない限定要素がまとまってれば完璧だと思う。ライセンス欄も全ては大変だから主要アビだけでも載ってると素晴らしい。 -- (名無しさん) 2007-09-13 03 14 40 上のゆとりは「更新メモ」の意味がわからないのだなまあ場違いなのはわかっているがどうしても気になったのでスマソ -- (名無しさん) 2007-09-16 18 27 40 ライセンスで全部はつらいので主要アビが載っていれば満足 -- (名無しさん) 2007-09-17 03 33 26 第11鉱区のカギどこぉ〜? -- (名無しさん) 2007-11-22 13 53 08 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/openx/pages/25.html
概要 設定を確認し、問題が捕捉されたら表示する 引数 なし 実装 function OX_initialSystemCheck(){ $errorUrl = http //www.openx.org/help/2.8/pre-init-error/ ; OX_checkSystemInstalled()参照 $installed = OX_checkSystemInstalled(); $aErrors = array(); $erorCode = OX_checkSystemInitialRequirements($aErrors); if ($erorCode !== true) { $imageRelativePath = ./www/admin/precheck/ ; // Do functions strpos parse_url exist? If so, try to // guess the proper relative path... if ($erorCode != -2) { // Checking if URL include www or admin in path if (strpos($_SERVER[ REQUEST_URI ], /www/admin/ ) !== false) { $imageRelativePath = ./precheck/ ; } else if (strpos($_SERVER[ REQUEST_URI ], /www/ ) !== false) { $imageRelativePath = ./admin/precheck/ ; } } CSSの設定 // We always trying show images in CSS $bodyBackground = url( {$imageRelativePath}body_piksel.gif ) repeat-x ; $liBackground = background url( {$imageRelativePath}list_element.gif ) no-repeat; ; $openXLogo = background url( {$imageRelativePath}openx_logo.gif ) no-repeat; ; $message = !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http //www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd html xmlns= http //www.w3.org/1999/xhtml xml lang= en lang= en head meta http-equiv= Content-Type content= text/html; charset=UTF-8 / meta name= Keywords content= / meta name= Description content= / title php Error page /title style type= text/css body { margin 0; background #fff . $bodyBackground . ; font-family Arial, Helvetica, sans-serif; font 12px Arial; color #747474; } h1 { width 80%; font 26px Arial; color #000; } h2 { width 80%; font 12px Arial; color #747474; margin-top 20px; } .error_container { margin-top 80px; margin-left 93px; } .error_list { width 80%; padding-left 33px; padding-top 15px; padding-bottom 15px; line-height 18px; border-top 1px solid #eee; border-bottom 1px solid #eee; } ul { list-style-type none; list-style-position outside; padding 0px; padding-top 10px; margin 0px; margin-left 15px; } li { .$liBackground. padding-left 10px; } .help_link active, .help_link link, .help_link visited { color #0767a8; text-decoration none; } .help_link hover { color #0767a8; text-decoration underline; } .logo_image { .$openXLogo. width 173px; height 60px; } /style /head body div class= logo_image nbsp; /div div class= error_container ; if ($installed) { $message .= h1 Sorry, but OpenX cannot currently run on your machine /h1 ; } else { $message .= h1 Sorry, but the OpenX installer system cannot currently be started /h1 ; } $message .= div class= error_list Detected problem ; if (count($aErrors) 1) { $message .= s ; } $message .= ul ; echo $message; foreach ($aErrors as $errorMessage) { echo li {$errorMessage} /li ; } $message = /ul /div h2 Please see our a href= .$errorUrl. class= help_link documentation /a for help with the above error ; if (count($aErrors) 1) { $message .= s ; } $message .= . /h2 /div /body /html ; echo $message; // Terminate execution exit; } } コメント
https://w.atwiki.jp/mountandblade/pages/122.html
M B Module System Documentation PART4-6 PART1-3へ(リンク) PART7-10へ(リンク) M B Module System Documentation PART4-6PART4 パーティ(Module Party Templates)4.1 Module_Party_Templatesの意味 4.2 パーソナリティ 4.3 新しいテンプレートの作成 PART5 アイテム(Module Items)5.1 Module_Itemsの説明 5.2 ダメージタイプ 5.3 アイテムの作成 5.4 アイテムのステータス一般 itp_type_horse itp_type_one_handed_wpn itp_type_two_handed_wpn itp_type_polearm itp_type_arrows itp_type_bolts itp_type_shield itp_type_bow itp_type_crossbow itp_type_thrown itp_type_goods itp_type_head_armor itp_type_body_armor itp_type_foot_armor itp_type_hand_armor itp_type_pistol itp_type_musket itp_type_bullets PART6 定数、勢力、文章とクエスト(Module Constants, Factions, Strings and Quests)6.1 Module_Constants 6.2 Module_Factions 6.3 Module_Strings 6.4 Module_Quest 他の章へのリンクPART1 イントロダクション(Getting Started) PART2 モジュールシステムの編集(Editing the Module System) PART3 兵士(Module Troops) PART7 シーン編集(Scene Editing) PART4 パーティ(Module Party Templates) この章ではパーティテンプレートを扱います。 PART2で学んだパーティと混同しないように注意してください。 簡単に言うと、パーティテンプレートはmap上に出現するパーティのガイドラインです。 パーティはmap上のユニークな存在なのに対して、テンプレートはゲーム内では見えません。 パーティテンプレートIDが与えられている場合、そのパーティIDへ入力する操作は無効となります。 パーティテンプレートはmodule_party_template.pyにあります。 4.1 Module_Party_Templatesの意味 party_templates =[, で始まるパイソンのリストは、最初にいくつかのハードワイヤードなテンプレートを含みます。その部分は編集してはいけません。 module_party_templateのタプルはmodule_partiesのそれとよく似ています。 しかし互換性はありません。 パーティテンプレートの例を見てみます。 ("village_farmers","Village Farmers",icon_peasant,0,fac_innocents,merchant_personality,[(trp_farmer,5,10),(trp_peasant_woman,3,8)]), このテンプレートのパーティは”famers”と呼ばれます。 (訳注:これはVillege Farmersのはず 。恐らくJIK氏が修正し忘れています。) このパーティはfarmerとpeasant womanによって構成され、臆病に行動します。 またゲーム中に接触すると自動的にダイアログが始まります。 (フラグpf_auto_start_dialogが抜けていますが、全てのパーティが接触によって自動的にダイアログが始まるからでしょうか) タプルの意味を見ていきます。 1)パーティテンプレートID。他のファイルからの参照に使います。 2)パーティテンプレートの名前。このテンプレートを使うパーティの名前になります。 3)フラグ。header_parties.pyに使用可能なフラグの表があります。 4)メニュー。module_partiesと同じく非推奨で、0を入れます。 5)ファクション。 6)パーソナリティ。map上でのパーティの行動を決めるフラグが入ります。 7)スタックリスト。最大6スタックまで可能です。 7.1)兵士ID。 7.2)最少人数。 7.3)最大人数。 7.4)メンバーフラグ(オプション)。メンバーに関するフラグを追加できます。 例:(trp_swadian_crossbowman,5,14,pmf_is_prisoner) Villege Farmersのタプルを当てはめてみます。 1)パーティテンプレートID = "village_farmers" 2)パーティテンプレートの名前 = "Village Farmers" 3)フラグ = icon_peasant 4)メニュー = 0 5)ファクション = fac_innocents 6)パーソナリティ = merchant_personality 7)スタックリスト 7.1)兵士ID = trp_farmer, trp_peasant_woman 7.2)最少人数 = 11, 16(訳注:これも修正し忘れ。正しくは5, 3) 7.3)最大人数 = 22, 44(訳注:同上。10, 8) 7.4)メンバーフラグ = なし もうタプルを読むのにも慣れてきたことでしょう。 この中で他と違うのは6番目、パーソナリティのフラグです。 次節ではこのフラグの役割を扱います。 4.2 パーソナリティ 前の節で触れたとおり、パーソナリティはmap上でパーティの行動を決定します。 パーティの勇気(courage)と攻撃性(aggressiveness)を直接指定したり、 merchant_personalityのようなプリセットを指定できます。 プリセットは勇気と攻撃性を含む定数で、header_parties.pyの一番下で定義されています。 ex. merchant_personality = aggressiveness_0 | courage_7 攻撃性0のパーティは他のパーティを一切攻撃しません。 攻撃性8では、攻撃側と防御側の関係が悪く、また防御側が数で大きく勝っていない場合に攻撃します。 勇気はどれ位の大きさのパーティから逃げるかを決定します。 勇気が高いほどは数が多い相手からも逃走しにくくなります。 この値は0から15の範囲で自由に決められます。 しかしMODDING初心者にはプリセットの利用を薦めます。 プリセットは初めてのMODに使うには十分実用的です。 最後にフラグ banditnessについて触れておきます。 このフラグはパーティを盗賊として、近くのパーティに常に注意し、獲物が大量の金/交易品を持っている場合は攻撃するようにします。 盗賊が軍隊に襲い掛からないように、攻撃性を低くするかパーティの人数を少なく抑えたほうがよいでしょう。 4.3 新しいテンプレートの作成 "farmers"のタプルをリストの最後尾にコピー&ペーストして手を加えます。 ("new_template","new_template",icon_peasant,0,fac_innocents,merchant_personality,[(trp_farmer,5,10),(trp_peasant_woman,3,8)]), Idを“farmers”を”new_template”に、名前も同様に変更しました。更に手を加えていきます。 まずファクションをfac_neutralに、パーソナリティをsoldier_personalityに変更します。 ("new_template","new_template",icon_peasant,0,fac_neutral,soldier_personality,[(trp_farmer,5,10),(trp_peasant_woman,3,8)]), これにより中立勢力となり、また敵の部隊を攻撃するようになりました。 更に兵士の構成も変更します。 ("new_template","new_template",icon_peasant,0,fac_neutral,soldier_personality,[(trp_npc17,1,1),(trp_new_troop,16,44)]), この例は幾つかの重要な変化を含んでいます。 特に重要なのは”(trp_npc17,1,1)”が入ったことで、PART3で作ったGeoffrey君がこの部隊に入りました。 ヒーローユニットは唯一無二なので当然その数は1です。 部下としてtrp_new_troopを追加します。これもPART3で作った兵士です。 最少で16人、最多44人の“new troop”がパーティに入ります。 セーブしてビルドします。成功すれば新しいテンプレートが利用可能になります。 しかし新しいテンプレートを利用するパーティが存在しないので、ゲームを起動してもGeoffrey君の部隊は出現しません。 後の章ではテンプレートの部隊の出現方法を学びますが、 とりあえず今はGeoffrey君とその仲間達は置いておいて、 PART5では新しいアイテムの作り方を学びます。 PART5 アイテム(Module Items) PART3と4では新しい兵士とパーティテンプレート、そして装備させる方法を学びました。 これを踏まえて、この章では新しいアイテムの作り方を学びます。 5.1 Module_Itemsの説明 module_items.pyは幾つかのアイテム修飾子(modifier)に関する定数で始まります。 修飾子はmodule_itemsのタプルからゲーム中で見る形のアイテムを生み出し、またアイテムの性能を上下させます。 ex. Bent polearm、chipped sword, heavy axe これら定数は標準のアイテム修飾子を定義しています。商人のインベントリやlootで見るアイテムはこれらの定数から修飾子をランダムに選択します。 その選択ではリストにない修飾子は考慮されません。 しかし経験を積んだMODDERにとって、 演算“troop_add_item”を利用すれば定数リストの中にない修飾子も利用されうるという点は注意が必要です。 例えば、longbowは通常”plain”、”bent”、”cracked”の形のみをとります。 しかしプレイヤーのインベントリに修飾子”balanced”をつけて追加すれば、balanced longbowを入手できます。 定数の後にタプルのリストが始まります。 最初にある”practice_sword”を例として取り上げることにします。 ["practice_sword","Practice Sword", [("practice_sword",0)], itp_type_one_handed_wpn|itp_primary|itp_secondary|itp_wooden_parry|itp_wooden_attack, itc_longsword, 3,weight(1.5)|spd_rtng(103)|weapon_length(90)|swing_damage(16,blunt)|thrust_damage(10,blunt),imodbits_none], これはArenaやTraining fieldで使う練習用の武器です。 タプルの要素を見ていきます。 1)アイテムID。他のファイルからの参照に利用します。 2)アイテムの名前。インベントリ画面で表示される名前です。 3)メッシュのリスト。各メッシュは以下の要素を含むタプルです。 3.1)メッシュの名前。ゲームorモジュールのリソースファイル内の3Dモデルの名前。 3.2)このメッシュに適応する修飾子。 デフォルトの代わりにこのメッシュを利用するアイテム修飾子のリスト。 1つ目のメッシュがデフォルトになります。 4)アイテムのフラグ。 5)能力(capability)。アイテムが利用できるアニメーションを含みます。 6)価値。単位はdenar。Tradeスキルが10未満の場合、実際の価値はこれ以上になります。 7)ステータス。重さ、存在度、難易度、アーマーレートなど。 8)このアイテムが利用しうる修飾子。module_items.pyの最初にリストがあります。 9)トリガー(オプション)。このアイテムに関係するトリガーのリストです。 Practice_swordの例を当てはめてみます。 1)アイテムID = "practice_sword" 2)アイテムの名前 = "practice_sword" 3)メッシュのリスト 3.1)メッシュの名前 = "practice_sword" 3.2)メッシュの修飾子 = 0 4)フラグ = itp_type_one_handed_wpn|itp_melee|itp_primary|itp_secondary 5)能力= itc_longsword 6)価値 = 3 7)ステータス = weight(1.5)|spd_rtng(103)|weapon_length(90)|swing_damage(16,blunt)|thrust_damage(10,blunt) 8)修飾子 = imodbits_none 9)トリガー = なし これで“practice_sword”の性質について詳しく分かるようになりました。 メッシュ”practice_sword”をデフォルトメッシュとして利用している フラグによってmelee武器になっている。”practice_sword”を装備した兵士は、インベントリからプライマリのmelee武器を選ぶときに”practice_sword”を選択肢として考えます。 (注意:セカンダリ武器の関数は不明瞭です。いつ使うのか、常に使うのかよく分かりません。しかし、melee兵士は戦闘中にmelee武器を切り替えることはありません) アニメーションは定数itc_longswordによって定義されており、longswordと同じ動きをします。 重さ1.5kg、スピードレート103、武器の長さ90、殴打のベースダメージが振りで16、突きで10です。 アイテム修飾子は使いません。常に同じアイテムです。 5.2 ダメージタイプ 上のタプルの説明にあったとおり、”practice_sword”は殴打(Blunt)ダメージを与えます。 練習用武器だから、という理由ですが、これを機にM Bでのダメージタイプを見てみます。 Cutダメージ:剣など鋭利な刃物での切りつけによるダメージを表します。Cutダメージは鎧を装備していない、または軽装の敵にボーナスがあり、重装の敵にペナルティがあります。またCutダメージでhpを0にすると相手は死にます。 Bluntダメージ:メイスやハンマーなど、刃の無い武器での殴打によるダメージを表します。重装の敵に50%のボーナスがありますが、全体に刃物よりも短くダメージも低いです。殴打武器の最大の長所は敵を殺さずに気絶させることです。気絶したときは奴隷として売ることが出来ます。馬の突撃もBluntダメージになります。 Pierceダメージ:矢やボルトなどの突入によるダメージを表します。Pierceダメージは重装の敵に50%のボーナスがありますが、他のダメージタイプとのバランスを取るために、一般に他の武器よりもダメージが低いです。Pierceダメージは敵を殺害します。 5.3 アイテムの作成 “practice_sword”のタプルをリストの最後尾にコピー&ペーストしてIDと名前を変更します。 ["new_mace","New Mace", [("practice_sword",0)], itp_type_one_handed_wpn|itp_primary|itp_secondary|itp_wooden_parry|itp_wooden_attack, itc_longsword, 3,weight(1.5)|spd_rtng(103)|weapon_length(90)|swing_damage(16,blunt)|thrust_damage(10,blunt),imodbits_none], M Bのファイルシステムはかなり柔軟です。少しの調整で剣がメイスになります。 “practice_sword”は元々Bluntダメージなので更に簡単です。 まず、アイテムの能力を"itc_longsword"から"itc_scimitar"に変更します。 定数”itc_scimitar”には突きが無いので、突きが使えなくなります。 更にメッシュを"practice_sword"から"mace_pear"に変更します。 このメッシュはNativeでは使われていないので、新鮮な見た目をしたメイスになります。 そして他のメイスには無いフラグ"itp_wooden_attack"を消去します。 ["new_mace","New Mace", [("mace_pear",0)], itp_type_one_handed_wpn|itp_primary|itp_secondary|itp_wooden_parry,itc_scimitar, 3,weight(1.5)|spd_rtng(103)|weapon_length(90)|swing_damage(16,blunt)|thrust_damage(10,blunt),imodbits_mace], メッシュを変更しただけでなく、修飾子を imodbits_none から imodbits_maceに変更しました。 これにより新しいメイスは定数 imodbits_maceの修飾子を使えるようになります。 更に二箇所に手を加えます。振りダメージの上昇とフラグの追加です。 ["new_mace","Geoffreys mace", [("mace_pear",0)] , itp_type_one_handed_wpn|itp_primary|itp_secondary|itp_wooden_parry|itp_unique, itc_scimitar, 3,weight(1.5)|spd_rtng(103)|weapon_length(90)|swing_damage(26,blunt)|thrust_damage(10,blunt),imodbits_mace], 振りダメージが16から26になりました。そしてより重要なことに、フラグ itp_uniqueが追加されました。 フラグ itp_uniqueの付いた装備は普通の戦闘後のloot画面では入手出来ません。 これはあまりにも早い入手を防ぐための措置です。 最後の調整として、名前を"Geoffreys mace"に変更します。 そしてGeoffrey君の持ち物にするために、module_troops.pyを開き、 彼のインベントリの itm_clubを itm_new_maceに変更します。 セーブしてビルドします。”itm_new_mace”は存在しないというエラーを吐くかもしれません。 これはファイルをコンパイルする順番が、編集の順番とは異なるというレッスンです。 module_troops.pyはおそらくmodule_items.pyより先にコンパイルされています。 このために、新しいメイスはコードの中で未登場となっているのです。 もう一度ビルドすると、エラーは起こりません。module_items.pyが先にコンパイルされたためです。 モジュールファイルを編集する、特に次に編集するモジュールで必要なものを先に追加している場合、編集が終わった後にコンパイルするように心がけましょう。 おめでとうございます!新しいアイテムを作り、兵士のインベントリに追加できました! 問題の兵士はヒーローユニットであり、なので常にnew maceをインベントリに持ち、 その中で最高の武器を装備します。 一方、一般兵はインベントリの中からランダムで装備します。 このために一般兵の装備はバリエーションを持っているのです。 次は様々なステータスの意味について見ていきます。 5.4 アイテムのステータス 一般 abundance:パーセント値 商人のインベントリやlootにアイテムが出現する確率を表します。 100が標準で下限は0です。 weight:キログラム値 アイテムの重さをキログラムで定義します。 itp_type_horse body_armor:値 馬のアーマーレートとHPを決定します。 difficulty:値 騎乗に必要なRidingスキルの高さを決定します。 horce_speed:値 戦闘マップでの馬のスピードを決定します。高いほど速くなります。 horce_maneuver:値 戦闘マップでの馬の機動性を決定します。 horce_charge:値 馬が歩兵に突撃した時のダメージの大きさ、歩兵に接触した時の減速の大きさを決定します。 高い値はダメージを大きく、歩兵の中を抜けやすくなります。 itp_type_one_handed_wpn difficulty:値 装備に必要な最小STR値です。 spd_rtng:値 振り、突き両方での攻撃速度です。 weapon_length:センチメートル値 センチメートルで表した武器の長さです。 メッシュサイズとは無関係に武器のリーチを決定します。 swing_damage:値、ダメージタイプ 振り攻撃でのベースダメージとダメージタイプです。 thrust_damage:値、ダメージタイプ 突き攻撃でのベースダメージとダメージタイプです。 itp_type_two_handed_wpn itp_type_one_handed_wpnと同じです。 itp_type_polearm itp_type_one_handed_wpnと同じです。 itp_type_arrows weapon_length:センチメートル値 センチメートルで表した矢の長さです。 thrust_damage:値、ダメージタイプ 弓のベースダメージに加算されるダメージ量とダメージタイプです。 max_ammo:値 1スタックに含まれる矢の数です。 itp_type_bolts itp_type_arrowsと同じです。 itp_type_shield hit_points:値 盾のHPのベース値です。 body_armor:値 盾への攻撃に対して軽減されるダメージの値です。 spd_rtng:値 盾が防御体勢に入るまでの速度です。 weapon_length:値 シールド範囲です。大きいほど体の多くの部分をカバーできます。 itp_type_bow difficulty:値 弓を使うのに必要な最小のPower Drawスキル値です。 spd_rtng:値 弓の再装填速度です。 高いほど矢筒から引き出し、つがえ、放つまでの時間が短くなります。 shoot_speed:値 矢の飛ぶ速度です。高いほど速く飛びますが、あまりにも速い矢は近くの敵に当たらずに素通りします。 thrust_damage:値、ダメージタイプ ベースダメージとダメージタイプです。 accuracy:パーセント値 矢がまっすぐ狙った場所に飛ぶ確率です。100は100%を示します。 Nativeでは利用されていませんが、追加できます。 itp_type_crossbow difficulty:値 そのクロスボウを使うのに必要な最小STR値です。 spd_rtng:値 クロスボウの再装填速度です。 高いほど矢筒からボルトを抜き、つがえ、弦を引ききるまでの時間が短くなります。 shoot_speed:値 弓と同じです。 thrust_damage:値、ダメージタイプ 弓と同じです。 max_ammo:値 再装填が必要となるまでにボルトを何発撃てるかです。 accuracy:パーセント値 弓と同じです。 itp_type_thrown difficulty:値 その武器を使うのに必要な最小Power Throwスキル値です。 spd_rtng :値 弓と同じです。 shoot_speed:値 弓と同じです。 thrust_damage :値、ダメージタイプ 弓と同じです。 max_ammo :値 1スタックに何個の武器が含まれているかです。 weapon_length:センチメートル値 武器の長さが何センチメートルあるかです。 itp_type_goods food_quality その食べ物のモラルへの影響です。50以上の場合、消費されるときにモラルを上昇させ、 50以下の場合はモラルを下げます。 max_ammo その食べ物の消費可能な数です。 itp_type_head_armor head_armor:値 兵士の頭へのダメージを防ぐ大きさです。 body_armor:値 兵士の体へのダメージを防ぐ大きさです。 leg_armor:値 兵士の足へのダメージを防ぐ大きさです。 difficulty:値 その装備を身につけるのに必要な最小STR値です。 itp_type_body_armor itp_type_head_armorと同じです。 itp_type_foot_armor itp_type_head_armorと同じです。 itp_type_hand_armor itp_type_head_armorと同じです。 itp_type_pistol difficulty:値 そのピストルを使うのに必要な最小STR値です。 difficulty:値 ピストルの再装填速度です。 shoot_speed:値 弾丸の速度です。 max_ammo:値 装填可能な弾の数です。 accuracy:パーセント値 弾が狙った場所に飛ぶ確率です。100で100%です。 itp_type_musket itp_type_pistolと同じです。 itp_type_bullets itp_type_pistolと同じです。 PART6 定数、勢力、文章とクエスト(Module Constants, Factions, Strings and Quests) このパートでは、モジュール内でもっとも小さく、全体への影響も少ないが、 しかし色々と便利なモジュールファイルを扱います。 6.1 Module_Constants module_constants.py はシンプルで、定数で埋め尽くされています。 module_constants内の定数は他の場所で宣言された定数と同じですが、 他の場所からの参照が容易なようにまとめられています。 例えば、定数 hero_escape_after_defeat_chanceの値を80から50にすると、 定数 hero_escape_after_defeat_chanceを使う演算はすべて50を投入するようになります。 このファイルはまた、kings_begin = “trp_kingdom_1_lord”や kings_end = “trp_knight_1_1”など 範囲マーカーも含んでいます。 定数セクションで定義されている他の重要なものとしてはスロット(Slot)があります。 スロットは兵士、ファクション、パーティに対して割り当てる事ができ、 そのグループの全員に特定の値を割り当てます。 例として街を街と定義しているスロットを見てみましょう #slot_party_type values ##spt_caravan = 1 spt_castle = 2 spt_town = 3 spt_village = 4 module_script.py の中で spt_townを検索すると、spt_townの値と一緒にslot_party_typeが各街に割り当てられていることがわかります。 これはファイル内の他のタプルや後から参照することが出来ます。 spt_townの slot_party_typeを割り当てましたが、これ以外の他のスロットも追加できます。 複雑に聞こえますが、スロットの使い方が分かれば便利なツールとなるでしょう。 不幸にも私自身まだマスターしていませんが、Nativeのコードを読み込むうちに理解できると思います。 6.2 Module_Factions module_factions.pyはモジュールシステムとM BのAIで使われる全てのファクションを含んでいます。 小さいファイルですが、いくつもの重要な設定に関わっています。 ファイルはPythonのリスト factions = [ で始まります。 他のモジュールファイルと同様、始めの幾つかのタプルはハードワイヤードなので編集不可です。 スクロールすると”deserters”のタプルが見つかります。 ("deserters","Deserters", 0, 0.5,[("manhunters",-0.6),("merchants",-0.5),("player_faction",-0.1)], [], 0x888888), このタプルは”deserters”というファクションを管理しています。 ”deserters”の主な敵は”manhunters”、”merchants”、”player_faction”のファクションです。 ”deserters”との関係がmodule_constantsで定義されていない場合、自動的に0にセットされます。 タプルの要素を見ていきます。 1)ファクションID。他のファイルからの参照に使います。 2)ファクションの名前。 3)フラグ。 4)一貫性(coherence)。このファクションのメンバー同士の関係を示します。 5)ファクション間の関係。 5.1)相手のファクション。 5.2)関係。2つのファクションの関係を示し、範囲は-1~1です。 6)ランク。 7)ファクションの色。デフォルトでグレイです。 例に当てはめてみます。 1)ファクションID = " deserters " 2)ファクションの名前 = "deserters" 3)フラグ = 0 4)一貫性 = 0.5 5)ファクション間の関係。 5.1)相手のファクション = "manhunters", “merchants”, "player_faction" 5.2)関係 = -0.6, -0.5, -0.1 6)ランク = 記述なし(JIK注:今のところこれが何なのか不明です) 7)色 = 0x888888(16進数) このファクションはフラグを持っておらず、一貫性はニュートラル、3種の敵がいます。 他の場所に目を向けると、全ての”kingdom_#”ファクションは”deserters”に対して-0.02の関係を持っています。 これは関係の働き方が双方向なためです。 片方にセットされれば、両方のファクションでカウントされます。 新しいファクションを作ります。 “deserters”をリストの最後にコピー&ペーストします。 更にIDと名前を”geoffrey”にして、”player_faction”以外との関係を削除します。 ("geoffrey","geoffrey", 0, 0.5,[("player_faction",-0.1)], [], 0x888888), その後セーブしてビルドします。 ここで定義したファクションを他のモジュールファイルで利用します。 module_party_templates.py と module_troops.pyを開き、 “new_template”と”npc17”のファクションを”fac_geoffrey”に変更します。 その後セーブしてビルドします。 成功すれば”new_template”のファクションが”Geoffrey”になり、プレイヤーに敵対するようになります。 6.3 Module_Strings module_strings.py はモジュールシステムの中でもっともシンプルなファイルです。 その中には文字列(strings)=テキストが入っています。 文字列は module_dialogsから module_questsまで、まとまったテキストを表示する必要のある全ての箇所で利用されています。 しかし module_stringsには、ひとつのファイルだけで利用されるのではない文字列が用意され、 モジュールシステム内の各所からの呼び出しに対応しています。 このファイルはmodule_fanctionsと同様にPythonのリスト strings = [ で始まります。 繰り返しになりますが、最初のいくつかのタプルはハードワイヤードです。 文字列の例を見てみます。 ("bandits_eliminated_by_another", "The troublesome bandits have been eliminated by another party."), ("s5_s_party", "{s5}'s Party"), タプルの要素を見ていきます。 1)文字列ID。参照に使います。 2)テキスト 重要な機能として、レジスタ値(register value)や他の文字列を投入出来ることが挙げられます。 例えば{reg0}を追加すると、reg(0)の現在値が表示されます。 同様に{reg10]ならばreg(10)の現在値が表示されます。 追加文字列として、普通のレジスタの代わりにに文字列レジスタ(string register)を利用できます。 これは文字列がレジスタとは別に格納されるためです。 例えば{s2]を追加した場合、reg{2}ではなく文字列レジスタ2が表示されます。 別々の事を示すために、同時にreg(2)と文字列レジスタ2が利用できます。 ダイアログにおいて、相手の性別によって違う文章を表示できます。 例えば、文字列に{sir/madam}を追加すると相手が男性のときsirを、女性のときmadamを表示します。 これらのオプションはいかなる文字列フィールドでも動作します。 一方、性別による分岐はダイアログでのみ有効です。 “display_message”のために、16進数コードを追加することで文字列の色を変更できます。 ex. (display_message, string_id ,[hex_colour_code]), 色の16進数コードはRGBフォーマットで指定します。 例えば白は0xFFFFFFFF 0xFF(色指定はこれから始まる)FF(赤)FF(青)FF(緑) 各色の値はどれも0~256の16進数表示です。 赤を使いたければ0xFFFF0000になります。 色作りの方法を知っておくと便利でしょう。 6.4 Module_Quest これら小さいファイルの最後はmodule_quests.pyです。 このファイルはクエストと、クエストに関連するテキストを含んでいます。 新しいクエストを追加すると、モジュールシステムはクエストの現在の状態を読みとり、 演算条件として利用します。 クエストの例を見てみます。 これは王からあなたに下される幾つかの配達命令のうちのひとつです。 ("deliver_message", "Deliver Message to {s13}", qf_random_quest, "{s9} asked you to take a message to {s13}. {s13} was at {s4} when you were given this quest." ), タプルの要素を見ていきます。 1)クエストID = "deliver_message" 2)クエストの名前 = "Deliver Message" 3)クエストフラグ = qf_random_quest 4)クエストの説明 = "{s9} asked you to take a message to {s13}. {s13} was at {s4} when you were given this quest." このクエストは文字列レジスタ{s9}、{s13}、{s4}を利用して、クエストの依頼者{s9}、請負人{s13}、 相手が最後に目撃された場所{s4}をあらわしています。 他のクエストを見ると、{s9}は常に依頼者、{s13}はターゲットの兵士/パーティ、そして{s4}はターゲットの最後の居場所のようです。 フラグ無しのクエストを作りたい場合、フラグには0を入れておきます。 我々の小さなクエストを作る第一歩を踏み出します。 下のクエストをコピーして、Pythonのリストの最後にある"quest_end"の前にペーストします。 ("mod_trouble", "Parley with the troublemakers", qf_random_quest, "Constible Haleck has asked you to deal with a bunch of young nobles making trouble around town.\ How you want to tackle the problem is up to you; He has promised a purse of silver if you succeed." ), (修正02/15/09 クエストの名前を修正しました) このタプルの構造について触れておきます。 見ての通り、新しいクエストを作るための変更点はわずかです。 しかし、それをゲームに組み込むためには他にも色々と手を出す必要があります。 注意:リストの全てのクエストはフラグ gf_random_questを持っています。 どうやら必要なフラグのようです。 まずクエストを受ける場所が必要です。次にクエストの中で役割を演じる”actors”が必要です。 最後に、クエストを面白くするダイアログが必要です。 旧チュートリアルはダイアログから取り組んでいましたが、 ここではまず”scene”から作ることにします。 ”scene”はクエストを受諾し、その”target”に直面する場所です。 その後 module_dialogs.pyに取り掛かり、 新しいクエスト、兵士、テンプレートを組み込みます。 文字列の改行には'\'を用いていることに注意してください。 セーブしてビルドします。エラーが無ければPART7に進みましょう。
https://w.atwiki.jp/genz/pages/832.html
部品構造 大部品 帝国軍狙撃兵(職業) RD 30 評価値 8大部品 狙撃兵訓練 RD 2 評価値 1部品 上級訓練の受講 部品 肉体と精神を鍛える。 大部品 狙撃兵の行動ポイント RD 9 評価値 5大部品 戦術 RD 6 評価値 4部品 カモフラージュ技術 部品 観測手も務める 部品 斥候任務 部品 「何処からともなく撃たれる」圧力 部品 高脅威目標を狙う 部品 遅滞戦闘 大部品 テクニック RD 3 評価値 2部品 狙撃点移動 部品 息止め 部品 匍匐 大部品 帝国軍歩兵 RD 19 評価値 7大部品 帝国軍歩兵訓練過程 RD 16 評価値 6部品 その期間は3年間 部品 練兵軍曹による厳しい訓練 部品 バトル・バディーと共に 部品 毎日の日課 部品 ファイヤー・ガード 部品 実地訓練 大部品 具体的訓練の内容 RD 10 評価値 5部品 基本戦闘訓練概要 大部品 第一段階「帝国の誇りの段階」 RD 3 評価値 2部品 協力しあう事、倫理観涵養 部品 肉体面訓練 部品 問題解決訓練 大部品 第二段階「シューターの段階」 RD 2 評価値 1部品 射撃訓練 部品 宰相閣下のにっこり「信頼コース」 大部品 第三段階「わんわんウォーリアの段階」 RD 4 評価値 3部品 最後の体力試験 部品 野戦訓練演習 部品 特殊戦術演習 部品 回復週 大部品 発生経緯と義務 RD 2 評価値 1部品 歩兵の必要性 部品 就任や装備などの制限 部品 帝国軍歩兵の流用実績 部品定義 部品 上級訓練の受講 帝国では狙撃兵の養成のため、上級訓練の受講を行わせている。(上級訓練を受講して合格しなければ狙撃兵にはなれない)。 つまり帝国においては狙撃兵はエリート兵士の一種であり、前哨狙撃も含めた狙撃について実地と訓練を約二年間行う。 当然この上級訓練受講のためには帝国軍歩兵として認められていなければならない。 部品 肉体と精神を鍛える。 狙撃兵は長時間同じ場所で狙撃姿勢を維持する強固な体力と、精神的重圧に耐える強靭な精神力が必要である。また、喫煙は禁止される。 部品 カモフラージュ技術 狙撃兵は銃の発射レートが高くない関係上、発見されてしまうと不利になる。これを避けるために狙撃兵には高度なカモフラージュ訓練を行う。 目立ちにくい色の服や迷彩服を着用したり、森の中だったら草むらに草を巻いて隠れるなどする。 部品 観測手も務める 狙撃兵は軍隊で運用される場合基本的に観測手を共立って行動する。単独では困難な射弾観測と修正を担当することで、射撃の指示や修正を行い、正確な狙撃を行うのだ。 部品 斥候任務 狙撃手は静かに行動し、集団移動するわけではないので移動の痕跡が少ない。そのため、斥候任務を行うこともある。そのため狙撃手には敵情の判断と把握能力も必要である。 部品 「何処からともなく撃たれる」圧力 狙撃手は単発で敵の高脅威目標を狙撃するが、高度にカモフラージュされた狙撃兵は狙撃点を特定されず、どこから撃たれているかを把握できないことも多い。 どこから撃たれるかわからない、いつ撃たれるかわからないという圧力は敵に相当な心理的圧力を与え、阻止力となる。 部品 高脅威目標を狙う 狙撃手の基本的な任務は脅威度の高い目標の排除である。敵狙撃手を探知お呼び排除するカウンタースナイプ任務なら優先目標となるのは敵の狙撃手であり、このほかに対戦車兵器の射手、機関銃手など、その場で脅威度が高いものが目標となりうる。 部品 遅滞戦闘 敵に強いプレッシャーを与えて敵の進行を遅らせる遅滞戦闘を目的とする狙撃はカウンタースナイパーと呼ばれ、たった1組の狙撃兵によって敵部隊を1つ足止めするといった大きな効果を現すことがある。この場合、負傷者を出して手当てに人手を割かせるため、あえて止めを刺さないなど長期的な影響を狙った選択が行われる事がある。 部品 狙撃点移動 いくらカムフラージュされているとはいえ、狙撃を続ければいずれかならず狙撃点が露見してしまう。狙撃兵は誰が撃ったかの特定ができやすいため、敵に恨まれやすく、そうでなくても露見した狙撃兵は狙われるのが常なので、基本的には狙撃兵は数発撃ったらすぐ狙撃点を移動するのが基本である。 部品 息止め 狙撃兵は敵を正確に射撃するため、射撃前に息をぐっと止める。息を吸う動作で胸郭が動いて、銃がぶれてしまうのだ。そのため、息を止めて体を固定することで、ブレのない正確な射撃を行うのだ。 部品 匍匐 狙撃兵は高度なカムフラージュ技術を持つが、最も視認性を下げるのは遮蔽物に隠れることであり、匍匐でのスムーズな移動は遮蔽に安定して隠れ、敵に発見されにくくするほか、前方投影面積を減らすために匍匐非常に重要なテクニックである 部品 その期間は3年間 帝國軍では隊員の練度を一定水準、この場合は歩兵としての実運用に耐えるレベルまでの育成を目的として、 訓練キャンプで三年間の訓練を実施している。充実したカリキュラムによって歩兵は実戦に出るための経験を積んでいくのだ。 部品 練兵軍曹による厳しい訓練 宰相府では新兵教育に練兵軍曹を用いている。彼らは基礎訓練の大部分の責任者である。武器の取り扱いから上官への挨拶まで全てを新兵に教え、誤りを指摘し、訓練過程を通して新兵に付き添う。彼らは新兵の安全にも責任を持つ。 彼らは特徴的な帽子(キャンペーン・ハット、スモーキー・ベアとも呼ばれる)を着用している。 単に練兵軍曹の帽子に畏怖を抱かせるのではなく、軍の階級を尊重させて指揮系統の規律を保つという観点から、多くのAITコースでは小隊付軍曹が教官に就いている。 部品 バトル・バディーと共に 「バトル・バディー」は、一般的には戦闘における兵士の相棒の呼称である。しかし、基礎訓練中、新兵が単独で行動するのを禁止して懲戒処分を下す際にこの語が用いられることもある。新兵が小隊や練兵軍曹から離れて行動する際、彼らは2人でバトル・バディーとして知られるペアを組んで行動する必要がある。 部品 毎日の日課 新兵の朝は早い。0430起床。男はひげそりだ。0500には朝の体力訓練、柔軟運動にランニング、0600朝食、0630訓練をみっちりやり、1200からは昼食で、1230からは休む間もなくまた訓練である。1700、クタクタになって戻ってきてやっと夕食。そして1730からは練兵軍曹に色々と叩き込まれる時間である。知識、礼儀作法、帝国歩兵としての誇り、そしてたまにはげんこつだったりいびりだったりである。そして2000からはやっと個人の時間だ。洗濯したりシャワーを浴びたりリラックスしたりできる。1時間だけだが。2100には寝なければならない。消灯だ。明日も早いのだから。 部品 ファイヤー・ガード 要するに当直である。新兵が二人一組で起きて、兵舎周辺のパトロールをし、火災に注意して掃除をして、兵舎から脱走しようとしている新兵も見つける。1時間で交代して寝るのだ。 つらい。つらいが慣れる。 部品 実地訓練 多くの実地訓練で、新兵は与えられた専門課程へ派遣される。例えばクレイモア対人地雷について学ぶコースであったり、対戦車のコースであったりする。宰相府の訓練ではしばしば(安全に配慮した上で)本物を用いることもあり、実際の銃器射撃を新兵に経験させることもある。 部品 基本戦闘訓練概要 基本戦闘訓練(Basic Combat Training、BCT)は全ての歩兵が受ける、同じ技術を教える10週間の訓練期間である。 要するに教わる技術はすべて必要な技術である。新兵全員はシステム化された同じ技術を教わらなければならないため、彼らは(自分の部隊のみならず)仲間と行動し、また必要に応じて自分(たち)を守る準備が整う。 全三段階に分けられている。 部品 協力しあう事、倫理観涵養 第一段階は「帝国の誇りの段階」とも呼ばれる段階。練兵軍曹にずっと監視され、ミスの修正を求められる。新兵はしばしば舞台全体での修正を求められることもある。 これによって新兵は責任の重さを覚え、鋭敏な注意力を養う。 具体的には雑嚢が山積みになった中から制限時間内に自分の雑嚢を見つけ出す(達成するには新兵同士で協力が必須)バッグ・ドリルに 教練と式典訓練(右向け右とかである)、ダミーライフルで銃器の扱いと重さになれる。 座学では帝国軍中心価値観を教える。帝國軍中心価値観に関しては別に説明する。 部品 肉体面訓練 基礎的な規律訓練を修了した後、徒手格闘訓練を行う。新兵同士での訓練も行われる。また、ここでは地図の読み方、コンパスの使用方法についても学ぶ。 ここでは「わんわん帝国栄光の塔」と呼ばれるハードな障害物競走もしなければならない。縄梯子や橋、壁を懸垂降下したりだ。つらいが間違えなく基礎体力と体の使い方は覚える。 これに協調性を養うための要素をより重視した「姫の教える手を取り合うコース」がある。これも基本は協力して障害を乗り越えていくコースだ。 部品 問題解決訓練 意識を失った人の輸送や様々な現実的な制約を与えられて、機材を輸送するなど問題解決訓練を行う。 ガスマスクをつけて催涙ガスの充満した部屋で訓練を行ったりもする。つらい。 最終段階ではついに本物の歩兵銃が与えられる。だがまだ撃たせない。基本小銃射撃術基礎訓練を徹底するのだ。 要するに歩兵銃の野戦分解を収録する。 部品 射撃訓練 実際に射撃を行い始める。支給されたアサルトライフルで様々な目標に射撃を行う。目標は段々と遠くなり、命中させるのが難しい形状になり、飛び出てくるような物にもなってくる。もちろん手榴弾や、グレネードランチャー、機関銃についても訓練する。第2段階の第2週目は対戦車兵器や他の火器の訓練を行う。 部品 宰相閣下のにっこり「信頼コース」 新兵が射撃や武器の取扱に自信をつけてきたら、限時間内において一連の目標に射撃を行う「信頼コース」と呼ばれる訓練も行われる。 加えて、教練や儀礼の訓練だけではない、激しく継続的な体力訓練がある。新兵は多くの訓練で実力を示し合格を勝ち取らなければ次の段階へ進むことはできない。 部品 最後の体力試験 第3段階ではまず最初に最後の体力試験がある。ここで不合格となると次の訓練にはススメないのだが体力試験は一年に一回しかない。皆必死に試験をパスするための訓練に勤しむ。 部品 野戦訓練演習 野営や、夜戦、市街戦などの野戦訓練演習。この間、基地内の食堂などの一般調理施設には近寄れなくなり、レーションだけが彼らの食事になる。つらい。おいしくない。(とはいえ昔に比べれば遥かにおいしくなったというのがベテランたちの言である) このストレス下で歩兵としての動きを真っ当できるか、忍耐を涵養する側面もこの訓練にはあるのだ。 部品 特殊戦術演習 特殊戦術的な演習。この演習において、練兵軍曹は助言をするものの、最終的な決定は新兵の小隊長と班長に任される。練兵軍曹はこの訓練で、チームでそれぞれ異なった判断をさせようと試みる。なぜなら兵士であることは非常に危険であり、新兵は攻撃性を持ち大胆不敵でなければならず、しかしながらそれを知性と常識で収めなければならないという状況に置かれるからである。この必要不可欠な条件を満たした者のみが高度個別訓練へと進む。 部品 回復週 「回復週」とも呼ばれる訓練の最終週。 この期間に、新兵は武器、寝具類、支給されたヘルメット、ガスマスク、水筒などの高等個別訓練で使用しない装備品を点検・修理しなければならない。同時に兵舎内も点検し、新しい小隊を受け入れられる状態にしておく。最終週ではまた、週末に行われる卒業式のため、新兵の礼装の確認や練習も行われる。立つ鳥跡を濁さずである。 部品 歩兵の必要性 わんわん帝国にはニューワールドでの開国当初から歩兵がある。歩兵の役割は偵察や護衛、狙撃など多岐にわたる。I=Dや戦車の視野確保も歩兵なくしては難しい。 軍に置いて訓練された歩兵は何者にも代えられない宝である。歩のない将棋は負け将棋。 部品 就任や装備などの制限 歩兵には、説明にある通り厳しいおおよそ3年間の訓練を超えなければなることはできない。これにはもちろん倫理、帝国の誇りある歩兵としての価値観涵養も含まれる。これらに合格したものしか歩兵になることはできない。 また歩兵には小銃などの兵器が任務時に支給されるが、これら帝国軍歩兵一般装備は、もちろん除隊されれば所有は許されない。また、就任中も装備が可能なのは基本任務中のみである。 部品 帝国軍歩兵の流用実績 以下のPC、藩国様に流用いただきました。 根拠:http //nekowasa.at.webry.info/201708/article_22.html (申請順) 竜宮・司@詩歌藩国 設問205へ提出 フシミ@星鋼京:近衛兵のアイドレスに流用 提出書式 大部品 帝国軍狙撃兵(職業) RD 30 評価値 8 -大部品 狙撃兵訓練 RD 2 評価値 1 --部品 上級訓練の受講 --部品 肉体と精神を鍛える。 -大部品 狙撃兵の行動ポイント RD 9 評価値 5 --大部品 戦術 RD 6 評価値 4 ---部品 カモフラージュ技術 ---部品 観測手も務める ---部品 斥候任務 ---部品 「何処からともなく撃たれる」圧力 ---部品 高脅威目標を狙う ---部品 遅滞戦闘 --大部品 テクニック RD 3 評価値 2 ---部品 狙撃点移動 ---部品 息止め ---部品 匍匐 -大部品 帝国軍歩兵 RD 19 評価値 7 --大部品 帝国軍歩兵訓練過程 RD 16 評価値 6 ---部品 その期間は3年間 ---部品 練兵軍曹による厳しい訓練 ---部品 バトル・バディーと共に ---部品 毎日の日課 ---部品 ファイヤー・ガード ---部品 実地訓練 ---大部品 具体的訓練の内容 RD 10 評価値 5 ----部品 基本戦闘訓練概要 ----大部品 第一段階「帝国の誇りの段階」 RD 3 評価値 2 -----部品 協力しあう事、倫理観涵養 -----部品 肉体面訓練 -----部品 問題解決訓練 ----大部品 第二段階「シューターの段階」 RD 2 評価値 1 -----部品 射撃訓練 -----部品 宰相閣下のにっこり「信頼コース」 ----大部品 第三段階「わんわんウォーリアの段階」 RD 4 評価値 3 -----部品 最後の体力試験 -----部品 野戦訓練演習 -----部品 特殊戦術演習 -----部品 回復週 --大部品 発生経緯と義務 RD 2 評価値 1 ---部品 歩兵の必要性 ---部品 就任や装備などの制限 --部品 帝国軍歩兵の流用実績 部品 上級訓練の受講 帝国では狙撃兵の養成のため、上級訓練の受講を行わせている。(上級訓練を受講して合格しなければ狙撃兵にはなれない)。 つまり帝国においては狙撃兵はエリート兵士の一種であり、前哨狙撃も含めた狙撃について実地と訓練を約二年間行う。 当然この上級訓練受講のためには帝国軍歩兵として認められていなければならない。 部品 肉体と精神を鍛える。 狙撃兵は長時間同じ場所で狙撃姿勢を維持する強固な体力と、精神的重圧に耐える強靭な精神力が必要である。また、喫煙は禁止される。 部品 カモフラージュ技術 狙撃兵は銃の発射レートが高くない関係上、発見されてしまうと不利になる。これを避けるために狙撃兵には高度なカモフラージュ訓練を行う。 目立ちにくい色の服や迷彩服を着用したり、森の中だったら草むらに草を巻いて隠れるなどする。 部品 観測手も務める 狙撃兵は軍隊で運用される場合基本的に観測手を共立って行動する。単独では困難な射弾観測と修正を担当することで、射撃の指示や修正を行い、正確な狙撃を行うのだ。 部品 斥候任務 狙撃手は静かに行動し、集団移動するわけではないので移動の痕跡が少ない。そのため、斥候任務を行うこともある。そのため狙撃手には敵情の判断と把握能力も必要である。 部品 「何処からともなく撃たれる」圧力 狙撃手は単発で敵の高脅威目標を狙撃するが、高度にカモフラージュされた狙撃兵は狙撃点を特定されず、どこから撃たれているかを把握できないことも多い。 どこから撃たれるかわからない、いつ撃たれるかわからないという圧力は敵に相当な心理的圧力を与え、阻止力となる。 部品 高脅威目標を狙う 狙撃手の基本的な任務は脅威度の高い目標の排除である。敵狙撃手を探知お呼び排除するカウンタースナイプ任務なら優先目標となるのは敵の狙撃手であり、このほかに対戦車兵器の射手、機関銃手など、その場で脅威度が高いものが目標となりうる。 部品 遅滞戦闘 敵に強いプレッシャーを与えて敵の進行を遅らせる遅滞戦闘を目的とする狙撃はカウンタースナイパーと呼ばれ、たった1組の狙撃兵によって敵部隊を1つ足止めするといった大きな効果を現すことがある。この場合、負傷者を出して手当てに人手を割かせるため、あえて止めを刺さないなど長期的な影響を狙った選択が行われる事がある。 部品 狙撃点移動 いくらカムフラージュされているとはいえ、狙撃を続ければいずれかならず狙撃点が露見してしまう。狙撃兵は誰が撃ったかの特定ができやすいため、敵に恨まれやすく、そうでなくても露見した狙撃兵は狙われるのが常なので、基本的には狙撃兵は数発撃ったらすぐ狙撃点を移動するのが基本である。 部品 息止め 狙撃兵は敵を正確に射撃するため、射撃前に息をぐっと止める。息を吸う動作で胸郭が動いて、銃がぶれてしまうのだ。そのため、息を止めて体を固定することで、ブレのない正確な射撃を行うのだ。 部品 匍匐 狙撃兵は高度なカムフラージュ技術を持つが、最も視認性を下げるのは遮蔽物に隠れることであり、匍匐でのスムーズな移動は遮蔽に安定して隠れ、敵に発見されにくくするほか、前方投影面積を減らすために匍匐非常に重要なテクニックである 部品 その期間は3年間 帝國軍では隊員の練度を一定水準、この場合は歩兵としての実運用に耐えるレベルまでの育成を目的として、 訓練キャンプで三年間の訓練を実施している。充実したカリキュラムによって歩兵は実戦に出るための経験を積んでいくのだ。 部品 練兵軍曹による厳しい訓練 宰相府では新兵教育に練兵軍曹を用いている。彼らは基礎訓練の大部分の責任者である。武器の取り扱いから上官への挨拶まで全てを新兵に教え、誤りを指摘し、訓練過程を通して新兵に付き添う。彼らは新兵の安全にも責任を持つ。 彼らは特徴的な帽子(キャンペーン・ハット、スモーキー・ベアとも呼ばれる)を着用している。 単に練兵軍曹の帽子に畏怖を抱かせるのではなく、軍の階級を尊重させて指揮系統の規律を保つという観点から、多くのAITコースでは小隊付軍曹が教官に就いている。 部品 バトル・バディーと共に 「バトル・バディー」は、一般的には戦闘における兵士の相棒の呼称である。しかし、基礎訓練中、新兵が単独で行動するのを禁止して懲戒処分を下す際にこの語が用いられることもある。新兵が小隊や練兵軍曹から離れて行動する際、彼らは2人でバトル・バディーとして知られるペアを組んで行動する必要がある。 部品 毎日の日課 新兵の朝は早い。0430起床。男はひげそりだ。0500には朝の体力訓練、柔軟運動にランニング、0600朝食、0630訓練をみっちりやり、1200からは昼食で、1230からは休む間もなくまた訓練である。1700、クタクタになって戻ってきてやっと夕食。そして1730からは練兵軍曹に色々と叩き込まれる時間である。知識、礼儀作法、帝国歩兵としての誇り、そしてたまにはげんこつだったりいびりだったりである。そして2000からはやっと個人の時間だ。洗濯したりシャワーを浴びたりリラックスしたりできる。1時間だけだが。2100には寝なければならない。消灯だ。明日も早いのだから。 部品 ファイヤー・ガード 要するに当直である。新兵が二人一組で起きて、兵舎周辺のパトロールをし、火災に注意して掃除をして、兵舎から脱走しようとしている新兵も見つける。1時間で交代して寝るのだ。 つらい。つらいが慣れる。 部品 実地訓練 多くの実地訓練で、新兵は与えられた専門課程へ派遣される。例えばクレイモア対人地雷について学ぶコースであったり、対戦車のコースであったりする。宰相府の訓練ではしばしば(安全に配慮した上で)本物を用いることもあり、実際の銃器射撃を新兵に経験させることもある。 部品 基本戦闘訓練概要 基本戦闘訓練(Basic Combat Training、BCT)は全ての歩兵が受ける、同じ技術を教える10週間の訓練期間である。 要するに教わる技術はすべて必要な技術である。新兵全員はシステム化された同じ技術を教わらなければならないため、彼らは(自分の部隊のみならず)仲間と行動し、また必要に応じて自分(たち)を守る準備が整う。 全三段階に分けられている。 部品 協力しあう事、倫理観涵養 第一段階は「帝国の誇りの段階」とも呼ばれる段階。練兵軍曹にずっと監視され、ミスの修正を求められる。新兵はしばしば舞台全体での修正を求められることもある。 これによって新兵は責任の重さを覚え、鋭敏な注意力を養う。 具体的には雑嚢が山積みになった中から制限時間内に自分の雑嚢を見つけ出す(達成するには新兵同士で協力が必須)バッグ・ドリルに 教練と式典訓練(右向け右とかである)、ダミーライフルで銃器の扱いと重さになれる。 座学では帝国軍中心価値観を教える。帝國軍中心価値観に関しては別に説明する。 部品 肉体面訓練 基礎的な規律訓練を修了した後、徒手格闘訓練を行う。新兵同士での訓練も行われる。また、ここでは地図の読み方、コンパスの使用方法についても学ぶ。 ここでは「わんわん帝国栄光の塔」と呼ばれるハードな障害物競走もしなければならない。縄梯子や橋、壁を懸垂降下したりだ。つらいが間違えなく基礎体力と体の使い方は覚える。 これに協調性を養うための要素をより重視した「姫の教える手を取り合うコース」がある。これも基本は協力して障害を乗り越えていくコースだ。 部品 問題解決訓練 意識を失った人の輸送や様々な現実的な制約を与えられて、機材を輸送するなど問題解決訓練を行う。 ガスマスクをつけて催涙ガスの充満した部屋で訓練を行ったりもする。つらい。 最終段階ではついに本物の歩兵銃が与えられる。だがまだ撃たせない。基本小銃射撃術基礎訓練を徹底するのだ。 要するに歩兵銃の野戦分解を収録する。 部品 射撃訓練 実際に射撃を行い始める。支給されたアサルトライフルで様々な目標に射撃を行う。目標は段々と遠くなり、命中させるのが難しい形状になり、飛び出てくるような物にもなってくる。もちろん手榴弾や、グレネードランチャー、機関銃についても訓練する。第2段階の第2週目は対戦車兵器や他の火器の訓練を行う。 部品 宰相閣下のにっこり「信頼コース」 新兵が射撃や武器の取扱に自信をつけてきたら、限時間内において一連の目標に射撃を行う「信頼コース」と呼ばれる訓練も行われる。 加えて、教練や儀礼の訓練だけではない、激しく継続的な体力訓練がある。新兵は多くの訓練で実力を示し合格を勝ち取らなければ次の段階へ進むことはできない。 部品 最後の体力試験 第3段階ではまず最初に最後の体力試験がある。ここで不合格となると次の訓練にはススメないのだが体力試験は一年に一回しかない。皆必死に試験をパスするための訓練に勤しむ。 部品 野戦訓練演習 野営や、夜戦、市街戦などの野戦訓練演習。この間、基地内の食堂などの一般調理施設には近寄れなくなり、レーションだけが彼らの食事になる。つらい。おいしくない。(とはいえ昔に比べれば遥かにおいしくなったというのがベテランたちの言である) このストレス下で歩兵としての動きを真っ当できるか、忍耐を涵養する側面もこの訓練にはあるのだ。 部品 特殊戦術演習 特殊戦術的な演習。この演習において、練兵軍曹は助言をするものの、最終的な決定は新兵の小隊長と班長に任される。練兵軍曹はこの訓練で、チームでそれぞれ異なった判断をさせようと試みる。なぜなら兵士であることは非常に危険であり、新兵は攻撃性を持ち大胆不敵でなければならず、しかしながらそれを知性と常識で収めなければならないという状況に置かれるからである。この必要不可欠な条件を満たした者のみが高度個別訓練へと進む。 部品 回復週 「回復週」とも呼ばれる訓練の最終週。 この期間に、新兵は武器、寝具類、支給されたヘルメット、ガスマスク、水筒などの高等個別訓練で使用しない装備品を点検・修理しなければならない。同時に兵舎内も点検し、新しい小隊を受け入れられる状態にしておく。最終週ではまた、週末に行われる卒業式のため、新兵の礼装の確認や練習も行われる。立つ鳥跡を濁さずである。 部品 歩兵の必要性 わんわん帝国にはニューワールドでの開国当初から歩兵がある。歩兵の役割は偵察や護衛、狙撃など多岐にわたる。I=Dや戦車の視野確保も歩兵なくしては難しい。 軍に置いて訓練された歩兵は何者にも代えられない宝である。歩のない将棋は負け将棋。 部品 就任や装備などの制限 歩兵には、説明にある通り厳しいおおよそ3年間の訓練を超えなければなることはできない。これにはもちろん倫理、帝国の誇りある歩兵としての価値観涵養も含まれる。これらに合格したものしか歩兵になることはできない。 また歩兵には小銃などの兵器が任務時に支給されるが、これら帝国軍歩兵一般装備は、もちろん除隊されれば所有は許されない。また、就任中も装備が可能なのは基本任務中のみである。 部品 帝国軍歩兵の流用実績 以下のPC、藩国様に流用いただきました。 根拠:http //nekowasa.at.webry.info/201708/article_22.html (申請順) 竜宮・司@詩歌藩国 設問205へ提出 フシミ@星鋼京:近衛兵のアイドレスに流用 インポート用定義データ [ { "title" "帝国軍狙撃兵(職業)", "part_type" "group", "children" [ { "title" "狙撃兵訓練", "part_type" "group", "children" [ { "title" "上級訓練の受講", "description" "帝国では狙撃兵の養成のため、上級訓練の受講を行わせている。(上級訓練を受講して合格しなければ狙撃兵にはなれない)。\nつまり帝国においては狙撃兵はエリート兵士の一種であり、前哨狙撃も含めた狙撃について実地と訓練を約二年間行う。\n当然この上級訓練受講のためには帝国軍歩兵として認められていなければならない。", "part_type" "part" }, { "title" "肉体と精神を鍛える。", "description" "狙撃兵は長時間同じ場所で狙撃姿勢を維持する強固な体力と、精神的重圧に耐える強靭な精神力が必要である。また、喫煙は禁止される。", "part_type" "part" } ], "expanded" false }, { "title" "狙撃兵の行動ポイント", "part_type" "group", "children" [ { "title" "戦術", "part_type" "group", "children" [ { "title" "カモフラージュ技術", "description" "狙撃兵は銃の発射レートが高くない関係上、発見されてしまうと不利になる。これを避けるために狙撃兵には高度なカモフラージュ訓練を行う。\n目立ちにくい色の服や迷彩服を着用したり、森の中だったら草むらに草を巻いて隠れるなどする。", "part_type" "part" }, { "title" "観測手も務める", "description" "狙撃兵は軍隊で運用される場合基本的に観測手を共立って行動する。単独では困難な射弾観測と修正を担当することで、射撃の指示や修正を行い、正確な狙撃を行うのだ。", "part_type" "part" }, { "title" "斥候任務", "description" "狙撃手は静かに行動し、集団移動するわけではないので移動の痕跡が少ない。そのため、斥候任務を行うこともある。そのため狙撃手には敵情の判断と把握能力も必要である。", "part_type" "part" }, { "title" "「何処からともなく撃たれる」圧力", "description" "狙撃手は単発で敵の高脅威目標を狙撃するが、高度にカモフラージュされた狙撃兵は狙撃点を特定されず、どこから撃たれているかを把握できないことも多い。\nどこから撃たれるかわからない、いつ撃たれるかわからないという圧力は敵に相当な心理的圧力を与え、阻止力となる。", "part_type" "part" }, { "title" "高脅威目標を狙う", "description" "狙撃手の基本的な任務は脅威度の高い目標の排除である。敵狙撃手を探知お呼び排除するカウンタースナイプ任務なら優先目標となるのは敵の狙撃手であり、このほかに対戦車兵器の射手、機関銃手など、その場で脅威度が高いものが目標となりうる。", "part_type" "part" }, { "title" "遅滞戦闘", "description" "敵に強いプレッシャーを与えて敵の進行を遅らせる遅滞戦闘を目的とする狙撃はカウンタースナイパーと呼ばれ、たった1組の狙撃兵によって敵部隊を1つ足止めするといった大きな効果を現すことがある。この場合、負傷者を出して手当てに人手を割かせるため、あえて止めを刺さないなど長期的な影響を狙った選択が行われる事がある。", "part_type" "part" } ], "expanded" false }, { "title" "テクニック", "part_type" "group", "children" [ { "title" "狙撃点移動", "description" "いくらカムフラージュされているとはいえ、狙撃を続ければいずれかならず狙撃点が露見してしまう。狙撃兵は誰が撃ったかの特定ができやすいため、敵に恨まれやすく、そうでなくても露見した狙撃兵は狙われるのが常なので、基本的には狙撃兵は数発撃ったらすぐ狙撃点を移動するのが基本である。", "part_type" "part", "expanded" true }, { "title" "息止め", "description" "狙撃兵は敵を正確に射撃するため、射撃前に息をぐっと止める。息を吸う動作で胸郭が動いて、銃がぶれてしまうのだ。そのため、息を止めて体を固定することで、ブレのない正確な射撃を行うのだ。", "part_type" "part" }, { "title" "匍匐", "description" "狙撃兵は高度なカムフラージュ技術を持つが、最も視認性を下げるのは遮蔽物に隠れることであり、匍匐でのスムーズな移動は遮蔽に安定して隠れ、敵に発見されにくくするほか、前方投影面積を減らすために匍匐非常に重要なテクニックである", "part_type" "part" } ], "expanded" false } ], "expanded" false }, { "id" 11272, "title" "帝国軍歩兵", "description" null, "part_type" "group", "created_at" "2017-08-21 02 03 48.400255", "updated_at" "2017-08-21 02 03 48.400255", "children" [ { "id" 11273, "title" "帝国軍歩兵訓練過程", "description" null, "part_type" "group", "created_at" "2017-08-21 02 03 48.408257", "updated_at" "2017-08-21 02 03 48.408257", "children" [ { "id" 11274, "title" "その期間は3年間", "description" "帝國軍では隊員の練度を一定水準、この場合は歩兵としての実運用に耐えるレベルまでの育成を目的として、\n訓練キャンプで三年間の訓練を実施している。充実したカリキュラムによって歩兵は実戦に出るための経験を積んでいくのだ。", "part_type" "part", "created_at" "2017-08-21 02 03 48.411854", "updated_at" "2017-08-21 02 03 48.411854", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11275, "title" "練兵軍曹による厳しい訓練", "description" "宰相府では新兵教育に練兵軍曹を用いている。彼らは基礎訓練の大部分の責任者である。武器の取り扱いから上官への挨拶まで全てを新兵に教え、誤りを指摘し、訓練過程を通して新兵に付き添う。彼らは新兵の安全にも責任を持つ。\n彼らは特徴的な帽子(キャンペーン・ハット、スモーキー・ベアとも呼ばれる)を着用している。\n単に練兵軍曹の帽子に畏怖を抱かせるのではなく、軍の階級を尊重させて指揮系統の規律を保つという観点から、多くのAITコースでは小隊付軍曹が教官に就いている。", "part_type" "part", "created_at" "2017-08-21 02 03 48.431859", "updated_at" "2017-08-21 02 03 48.431859", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11276, "title" "バトル・バディーと共に", "description" "「バトル・バディー」は、一般的には戦闘における兵士の相棒の呼称である。しかし、基礎訓練中、新兵が単独で行動するのを禁止して懲戒処分を下す際にこの語が用いられることもある。新兵が小隊や練兵軍曹から離れて行動する際、彼らは2人でバトル・バディーとして知られるペアを組んで行動する必要がある。", "part_type" "part", "created_at" "2017-08-21 02 03 48.448231", "updated_at" "2017-08-21 02 03 48.448231", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11277, "title" "毎日の日課", "description" "新兵の朝は早い。0430起床。男はひげそりだ。0500には朝の体力訓練、柔軟運動にランニング、0600朝食、0630訓練をみっちりやり、1200からは昼食で、1230からは休む間もなくまた訓練である。1700、クタクタになって戻ってきてやっと夕食。そして1730からは練兵軍曹に色々と叩き込まれる時間である。知識、礼儀作法、帝国歩兵としての誇り、そしてたまにはげんこつだったりいびりだったりである。そして2000からはやっと個人の時間だ。洗濯したりシャワーを浴びたりリラックスしたりできる。1時間だけだが。2100には寝なければならない。消灯だ。明日も早いのだから。", "part_type" "part", "created_at" "2017-08-21 02 03 48.460619", "updated_at" "2017-08-21 02 03 48.460619", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11278, "title" "ファイヤー・ガード", "description" "要するに当直である。新兵が二人一組で起きて、兵舎周辺のパトロールをし、火災に注意して掃除をして、兵舎から脱走しようとしている新兵も見つける。1時間で交代して寝るのだ。\nつらい。つらいが慣れる。", "part_type" "part", "created_at" "2017-08-21 02 03 48.477623", "updated_at" "2017-08-21 02 03 48.477623", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11279, "title" "実地訓練", "description" "多くの実地訓練で、新兵は与えられた専門課程へ派遣される。例えばクレイモア対人地雷について学ぶコースであったり、対戦車のコースであったりする。宰相府の訓練ではしばしば(安全に配慮した上で)本物を用いることもあり、実際の銃器射撃を新兵に経験させることもある。", "part_type" "part", "created_at" "2017-08-21 02 03 48.491049", "updated_at" "2017-08-21 02 03 48.491049", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11280, "title" "具体的訓練の内容", "description" null, "part_type" "group", "created_at" "2017-08-21 02 03 48.503769", "updated_at" "2017-08-21 02 03 48.503769", "children" [ { "id" 11281, "title" "基本戦闘訓練概要", "description" "基本戦闘訓練(Basic Combat Training、BCT)は全ての歩兵が受ける、同じ技術を教える10週間の訓練期間である。\n要するに教わる技術はすべて必要な技術である。新兵全員はシステム化された同じ技術を教わらなければならないため、彼らは(自分の部隊のみならず)仲間と行動し、また必要に応じて自分(たち)を守る準備が整う。\n全三段階に分けられている。", "part_type" "part", "created_at" "2017-08-21 02 03 48.50499", "updated_at" "2017-08-21 02 03 48.50499", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11282, "title" "第一段階「帝国の誇りの段階」", "description" null, "part_type" "group", "created_at" "2017-08-21 02 03 48.518054", "updated_at" "2017-08-21 02 03 48.518054", "children" [ { "id" 11283, "title" "協力しあう事、倫理観涵養", "description" "第一段階は「帝国の誇りの段階」とも呼ばれる段階。練兵軍曹にずっと監視され、ミスの修正を求められる。新兵はしばしば舞台全体での修正を求められることもある。\nこれによって新兵は責任の重さを覚え、鋭敏な注意力を養う。\n具体的には雑嚢が山積みになった中から制限時間内に自分の雑嚢を見つけ出す(達成するには新兵同士で協力が必須)バッグ・ドリルに\n教練と式典訓練(右向け右とかである)、ダミーライフルで銃器の扱いと重さになれる。\n座学では帝国軍中心価値観を教える。帝國軍中心価値観に関しては別に説明する。", "part_type" "part", "created_at" "2017-08-21 02 03 48.519385", "updated_at" "2017-08-21 02 03 48.519385", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11284, "title" "肉体面訓練", "description" "基礎的な規律訓練を修了した後、徒手格闘訓練を行う。新兵同士での訓練も行われる。また、ここでは地図の読み方、コンパスの使用方法についても学ぶ。\nここでは「わんわん帝国栄光の塔」と呼ばれるハードな障害物競走もしなければならない。縄梯子や橋、壁を懸垂降下したりだ。つらいが間違えなく基礎体力と体の使い方は覚える。\nこれに協調性を養うための要素をより重視した「姫の教える手を取り合うコース」がある。これも基本は協力して障害を乗り越えていくコースだ。\n", "part_type" "part", "created_at" "2017-08-21 02 03 48.542099", "updated_at" "2017-08-21 02 03 48.542099", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11285, "title" "問題解決訓練", "description" "意識を失った人の輸送や様々な現実的な制約を与えられて、機材を輸送するなど問題解決訓練を行う。\nガスマスクをつけて催涙ガスの充満した部屋で訓練を行ったりもする。つらい。\n最終段階ではついに本物の歩兵銃が与えられる。だがまだ撃たせない。基本小銃射撃術基礎訓練を徹底するのだ。\n要するに歩兵銃の野戦分解を収録する。", "part_type" "part", "created_at" "2017-08-21 02 03 48.551997", "updated_at" "2017-08-21 02 03 48.551997", "children" [], "character" { "id" 762, "name" "猫野和錆" } } ], "character" { "id" 762, "name" "猫野和錆" }, "expanded" true }, { "id" 11286, "title" "第二段階「シューターの段階」", "description" null, "part_type" "group", "created_at" "2017-08-21 02 03 48.576303", "updated_at" "2017-08-21 02 03 48.576303", "children" [ { "id" 11287, "title" "射撃訓練", "description" "実際に射撃を行い始める。支給されたアサルトライフルで様々な目標に射撃を行う。目標は段々と遠くなり、命中させるのが難しい形状になり、飛び出てくるような物にもなってくる。もちろん手榴弾や、グレネードランチャー、機関銃についても訓練する。第2段階の第2週目は対戦車兵器や他の火器の訓練を行う。", "part_type" "part", "created_at" "2017-08-21 02 03 48.57747", "updated_at" "2017-08-21 02 03 48.57747", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11288, "title" "宰相閣下のにっこり「信頼コース」", "description" "新兵が射撃や武器の取扱に自信をつけてきたら、限時間内において一連の目標に射撃を行う「信頼コース」と呼ばれる訓練も行われる。\n加えて、教練や儀礼の訓練だけではない、激しく継続的な体力訓練がある。新兵は多くの訓練で実力を示し合格を勝ち取らなければ次の段階へ進むことはできない。", "part_type" "part", "created_at" "2017-08-21 02 03 48.588828", "updated_at" "2017-08-21 02 03 48.588828", "children" [], "character" { "id" 762, "name" "猫野和錆" } } ], "character" { "id" 762, "name" "猫野和錆" }, "expanded" true }, { "id" 11289, "title" "第三段階「わんわんウォーリアの段階」", "description" null, "part_type" "group", "created_at" "2017-08-21 02 03 48.623586", "updated_at" "2017-08-21 02 03 48.623586", "children" [ { "id" 11290, "title" "最後の体力試験", "description" "第3段階ではまず最初に最後の体力試験がある。ここで不合格となると次の訓練にはススメないのだが体力試験は一年に一回しかない。皆必死に試験をパスするための訓練に勤しむ。", "part_type" "part", "created_at" "2017-08-21 02 03 48.625141", "updated_at" "2017-08-21 02 03 48.625141", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11291, "title" "野戦訓練演習", "description" "野営や、夜戦、市街戦などの野戦訓練演習。この間、基地内の食堂などの一般調理施設には近寄れなくなり、レーションだけが彼らの食事になる。つらい。おいしくない。(とはいえ昔に比べれば遥かにおいしくなったというのがベテランたちの言である)\nこのストレス下で歩兵としての動きを真っ当できるか、忍耐を涵養する側面もこの訓練にはあるのだ。", "part_type" "part", "created_at" "2017-08-21 02 03 48.64071", "updated_at" "2017-08-21 02 03 48.64071", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11292, "title" "特殊戦術演習", "description" "特殊戦術的な演習。この演習において、練兵軍曹は助言をするものの、最終的な決定は新兵の小隊長と班長に任される。練兵軍曹はこの訓練で、チームでそれぞれ異なった判断をさせようと試みる。なぜなら兵士であることは非常に危険であり、新兵は攻撃性を持ち大胆不敵でなければならず、しかしながらそれを知性と常識で収めなければならないという状況に置かれるからである。この必要不可欠な条件を満たした者のみが高度個別訓練へと進む。", "part_type" "part", "created_at" "2017-08-21 02 03 48.656465", "updated_at" "2017-08-21 02 03 48.656465", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11293, "title" "回復週", "description" "「回復週」とも呼ばれる訓練の最終週。\nこの期間に、新兵は武器、寝具類、支給されたヘルメット、ガスマスク、水筒などの高等個別訓練で使用しない装備品を点検・修理しなければならない。同時に兵舎内も点検し、新しい小隊を受け入れられる状態にしておく。最終週ではまた、週末に行われる卒業式のため、新兵の礼装の確認や練習も行われる。立つ鳥跡を濁さずである。", "part_type" "part", "created_at" "2017-08-21 02 03 48.669753", "updated_at" "2017-08-21 02 03 48.669753", "children" [], "character" { "id" 762, "name" "猫野和錆" } } ], "character" { "id" 762, "name" "猫野和錆" }, "expanded" true } ], "character" { "id" 762, "name" "猫野和錆" }, "expanded" true } ], "character" { "id" 762, "name" "猫野和錆" }, "expanded" true }, { "id" 11294, "title" "発生経緯と義務", "description" null, "part_type" "group", "created_at" "2017-08-21 02 03 48.711869", "updated_at" "2017-08-21 02 03 48.711869", "children" [ { "id" 11295, "title" "歩兵の必要性", "description" "わんわん帝国にはニューワールドでの開国当初から歩兵がある。歩兵の役割は偵察や護衛、狙撃など多岐にわたる。I=Dや戦車の視野確保も歩兵なくしては難しい。\n軍に置いて訓練された歩兵は何者にも代えられない宝である。歩のない将棋は負け将棋。", "part_type" "part", "created_at" "2017-08-21 02 03 48.712791", "updated_at" "2017-08-21 02 03 48.712791", "children" [], "character" { "id" 762, "name" "猫野和錆" } }, { "id" 11296, "title" "就任や装備などの制限", "description" "歩兵には、説明にある通り厳しいおおよそ3年間の訓練を超えなければなることはできない。これにはもちろん倫理、帝国の誇りある歩兵としての価値観涵養も含まれる。これらに合格したものしか歩兵になることはできない。\nまた歩兵には小銃などの兵器が任務時に支給されるが、これら帝国軍歩兵一般装備は、もちろん除隊されれば所有は許されない。また、就任中も装備が可能なのは基本任務中のみである。\n", "part_type" "part", "created_at" "2017-08-21 02 03 48.725115", "updated_at" "2017-08-21 02 03 48.725115", "children" [], "character" { "id" 762, "name" "猫野和錆" } } ], "character" { "id" 762, "name" "猫野和錆" }, "expanded" true }, { "id" 11297, "title" "帝国軍歩兵の流用実績", "description" "以下のPC、藩国様に流用いただきました。 根拠:http //nekowasa.at.webry.info/201708/article_22.html\n\n(申請順)\n竜宮・司@詩歌藩国\n設問205へ提出\nフシミ@星鋼京:近衛兵のアイドレスに流用\n", "part_type" "part", "created_at" "2017-08-21 02 03 48.743942", "updated_at" "2017-08-21 02 03 48.743942", "children" [], "character" { "id" 762, "name" "猫野和錆" } } ], "character" { "id" 762, "name" "猫野和錆" }, "expanded" false } ], "expanded" true } ]
https://w.atwiki.jp/tmtbnc/pages/52.html
ruby-1.8.7-p160 $ ./configure --help `configure configures this package to adapt to many kinds of systems. Usage ../configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking... messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `.. ] Installation directories --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install will install all the files in `/usr/local/bin , `/usr/local/lib etc. You can specify an installation prefix other than `/usr/local using `--prefix , for instance `--prefix=$HOME . For better control, use the options below. Fine tuning of the installation directories --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] Optional Features --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-frame-address use GCC __builtin_frame_address(). --disable-largefile omit support for large files --enable-pthread use pthread library. --disable-fastthread do not use the fastthread mutex --enable-setreuid use setreuid()/setregid() according to need even if ob solete. --disable-rpath embed run path into extension libraries. --enable-shared build a shared library for Ruby. --enable-install-doc build and install rdoc indexes during install Optional Packages --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-gcc never use gcc --with-winsock2 link winsock2 (MinGW only) --with-libc_r link libc_r if possible (FreeBSD only) --with-setjmp-type select setjmp type --with-default-kcode=CODE specify default value for \$KCODE (utf8|euc|sjis|non e) --with-dln-a-out use dln_a_out if possible --with-static-linked-ext link external modules statically --with-sitedir=DIR site libraries in DIR [LIBDIR/ruby/site_ruby] --with-vendordir=DIR vendor libraries in DIR [LIBDIR/ruby/vendor_ruby] --with-search-path=DIR specify the additional search path --with-mantype=TYPE specify man page type; TYPE is one of man and doc Some influential environment variables CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L lib dir if you have libraries in a nonstandard directory lib dir LIBS libraries to pass to the linker, e.g. -l library CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I include dir if you have headers in a nonstandard directory include dir CPP C preprocessor YACC The `Yet Another C Compiler implementation to use. Defaults to the first program found out of `bison -y , `byacc , `yacc . YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d given by some make applications. Use these variables to override the choices made by `configure or to help it to find libraries and programs with nonstandard names/locations.
https://w.atwiki.jp/satoschi/pages/960.html
バンバラ語文字体系 |Niger-Congo languages|Mande languages| 文字類型 ラテン文字 ンコ文字 アラビア文字 使用言語 バンバラ語【bam】 type Latin alphabet N Ko alphabet Arabic alphabet spoken language Bambara ISO 15924 【Latn?】 【Nkoo?】 【Arab?】 目次 contents バンバラ語文字体系目次 contents 概説 overview ラテン文字と発音 Latin alphabet and pronunciation 参考文献 referencesWEB 概説 overview ラテン文字と発音 Latin alphabet and pronunciation Alphabets des langues africaines 小文字 a b c d e è f g h i j k l m n ny ŋ o ò p r s t u w y z x 音価 /a/ /b/ /ʧ/ /d/ /e/ /ɛ/ /f/ /g/ /h/ /i/ /ʤ/ /k/ /l/ /m/ /n/ /ɲ/ /ŋ/ /o/ /ɔ/ /p/ /r/ /s/ /t/ /u/ /w/ /j/ /z/ /χ/ Geonames 大文字 A B C D E Ɛ F G H I J K L M N Ɲ Ŋ O Ɔ P R S T U W Y Z 小文字 a b c d e ε f g h i j k l m n ɲ ŋ o ɔ p r s t u w y z Peace Corps 小文字 a b c d e ε f g h i j k l m n ɲ ŋ o ɔ p r s t u w y z sh 発音例 Ah-ha Book Chair Door Day Met Foot Game Hair Tea Jail Kit Lock Meat Net Onion Sing Soda Long Put River See Termite Shoe War Year Zebra Shame Omniglot 大文字 A B C D E Ɛ F G H I J K L M N Ɲ Ŋ O Ɔ P R S T U W Y Z 小文字 a b c d e ε f g h i j k l m n ɲ ŋ o ɔ p r s t u w y z kh sh -n 音価 /a/ /b/ /ʨ/ /d/ /e/ /ɛ/ /f/ /g/ /h/ /i/ /ʥ/ /k/ /l/ /m/ /n/ /ɲ/ /ŋ/ /o/ /ɔ/ /p/ /r/ /s/ /t/ /u/ /w/ /j/ /z/ /x/ /ɕ/ /˜/ 参考文献 references WEB Alphabets des langues africaines Geonames Peace Corps【PDF】 Omniglot
https://w.atwiki.jp/torinikudaisuki/pages/6.html
NS3-UANの解読作業を行っています。具体的には、uan-cw-example.ccという、NS3-UANのサンプルプログラムを走らせて、その出力を見た後、 プログラムを頭から読んでいき、関数の意味をNS3のウェブドキュメントを見て調べたり、プログラム中の定義を見たり、includeされているプログラムを 見たりしながら理解していきました。また、NS3ではログを出力する機能があるので、 呼び出されている関数が、順番にそこそこの細かさで出力されるように設定して、ログを出力し、それを見ながら、どこで何が起きているかを見ていきました。 その後、ノイズモデルがどうパケットのロスの計算に用いられているのかが結局分からなかったので、ノイズモデルプログラム中のノイズを計算する関数が 誰に呼び出されているかを推測し、呼び出し先の関数がまた誰に呼び出されているかをドキュメントで確認していくことで、パケット受け取り の大雑把な流れを知りました。 Uan-cw-exampleの実行ログ 以下詳細作業ログです。 =================================================================================================================================================================================================== ☆11/24 NS3 Tutorialを読み進めようかとも思ったのですが、絶対に読んでおかねばならない所は読み終わった気がするので、効率を考えて、uanの実際のプログラムの解読にうつることにしました。まず、思い切りいじれ るようにするために、ns3-allinoneのコピーを取っておきました。その後、uanのcwMacのexample fileを ./waf --run src/uan/examples/uan-cw-example で実行しました。 すると、何やらよくわからない出力が出てきたので、std coutを使いつつ理解を試みました。 とりあえず、gpl fileを出していることが分かったので、gnuplotをinstallして見てみることに。 gnuplot uan-cw-example.gpl - gnuplotはデフォルトでは図が表示されてからすぐに消えてしまうので、commandで-をつけて対話型モードに移行するか、ファイル自体をpauseをするように書き換える必要があるようです。 参考:http //takeno.iee.niit.ac.jp/~shige/unix/gnuplot/faq/faq-j.html プログラム冒頭の説明を以下に引用。 Q)The MAC protocol is implemented in the class UanMacCw. CW-MAC is similar in nature * to the IEEE 802.11 DCF with a constant backoff window. It requires two parameters to be set, * the slot time and the contention window size. The contention window size is the backoff window * size in slots, and the slot time is the duration of each slot. These parameters should be set * according to the overall network size, internode spacing and the number of nodes in the network. * * This example deploys nodes randomly (according to RNG seed of course) in a finite square region with * the X and Y coordinates of the nodes distributed uniformly. The CW parameter is varied throughout * the simulation in order to show the variation in throughput with respect to changes in CW. (UQ これをみつつ考えると、gpl fileはCWのサイズの変化に対するthroughputの変化を描いたものでした。 Contention windowの復習:http //times.ansl.ntt.co.jp/gijyutu/2007_07/Topic_01/13.html contention windowが短すぎると衝突が起きてしまい、長すぎると無駄に待機してしまうから、throughputが悪くなってしまうと予想され、実際グラフはそうなっていました。 次回はどうやってthroughputの計算をしているのかの詳細を追うつもりです。 ( simulationのメインは ds = exp.Run (uan); でやっているので、expクラスがどんなものか見ていく必要がありますね。 ) ☆11/26 ★前回の調査でexp.Run()がsimulationのメインの処理をしていることが分かったので、今度はRun()が具体的に何をしているかを調査することにしました。 まず、"uan-cw-example.cc"をみると、 Experiment Experiment() Experiment exp; という記述があったので、Experimentクラスの中身を見てみることにしました。 includeをみると、experimentクラスは"uan-cw-example.h"にありそうだと推察されたので、そこをみてみました。 すると、下記のようなクラスの記述が見つかりました。 /** * \class Experiment * \brief Helper class for UAN CW MAC example * */ class Experiment { public Gnuplot2dDataset Run (UanHelper uan); void ReceivePacket (Ptr Socket socket); void UpdatePositions (NodeContainer nodes); void ResetData (); void IncrementCw (uint32_t cw); uint32_t m_numNodes; uint32_t m_dataRate; double m_depth; double m_boundary; uint32_t m_packetSize; uint32_t m_bytesTotal; uint32_t m_cwMin; uint32_t m_cwMax; uint32_t m_cwStep; uint32_t m_avgs; Time m_slotTime; Time m_simTime; std string m_gnudatfile; std string m_asciitracefile; std string m_bhCfgFile; Gnuplot2dDataset m_data; std vector double m_throughputs; Experiment (); }; #endif /* UAN_CW_EXAMPLE_H */ みると、Experimentクラスは中身がスカスカなことが分かりました。 それで、具体的な処理は、uan-cw-example.ccで、オーバーライドによって記述していると分かりました。以下がその中身です。 Gnuplot2dDataset Experiment Run (UanHelper uan) { uan.SetMac ("ns3 UanMacCw", "CW", UintegerValue (m_cwMin), "SlotTime", TimeValue (m_slotTime)); NodeContainer nc = NodeContainer (); NodeContainer sink = NodeContainer (); nc.Create (m_numNodes); sink.Create (1); PacketSocketHelper socketHelper; socketHelper.Install (nc); socketHelper.Install (sink); #ifdef UAN_PROP_BH_INSTALLED Ptr UanPropModelBh prop = CreateObjectWithAttributes UanPropModelBh ("ConfigFile", StringValue ("exbhconfig.cfg")); #else Ptr UanPropModelIdeal prop = CreateObjectWithAttributes UanPropModelIdeal (); #endif Ptr UanChannel channel = CreateObjectWithAttributes UanChannel ("PropagationModel", PointerValue (prop)); //Create net device and nodes with UanHelper NetDeviceContainer devices = uan.Install (nc, channel); NetDeviceContainer sinkdev = uan.Install (sink, channel); MobilityHelper mobility; Ptr ListPositionAllocator pos = CreateObject ListPositionAllocator (); { Ptr UniformRandomVariable urv = CreateObject UniformRandomVariable (); pos- Add (Vector (m_boundary / 2.0, m_boundary / 2.0, m_depth)); double rsum = 0; double minr = 2 * m_boundary; for (uint32_t i = 0; i m_numNodes; i++) { double x = urv- GetValue (0, m_boundary); double y = urv- GetValue (0, m_boundary); double newr = sqrt ((x - m_boundary / 2.0) * (x - m_boundary / 2.0) + (y - m_boundary / 2.0) * (y - m_boundary / 2.0)); rsum += newr; minr = std min (minr, newr); pos- Add (Vector (x, y, m_depth)); } NS_LOG_DEBUG ("Mean range from gateway " rsum / m_numNodes " min. range " minr); mobility.SetPositionAllocator (pos); mobility.SetMobilityModel ("ns3 ConstantPositionMobilityModel"); mobility.Install (sink); NS_LOG_DEBUG ("Position of sink " sink.Get (0)- GetObject MobilityModel ()- GetPosition ()); mobility.Install (nc); PacketSocketAddress socket; socket.SetSingleDevice (sinkdev.Get (0)- GetIfIndex ()); socket.SetPhysicalAddress (sinkdev.Get (0)- GetAddress ()); socket.SetProtocol (0); OnOffHelper app ("ns3 PacketSocketFactory", Address (socket)); app.SetAttribute ("OnTime", StringValue ("ns3 ConstantRandomVariable[Constant=1]")); app.SetAttribute ("OffTime", StringValue ("ns3 ConstantRandomVariable[Constant=0]")); app.SetAttribute ("DataRate", DataRateValue (m_dataRate)); app.SetAttribute ("PacketSize", UintegerValue (m_packetSize)); ApplicationContainer apps = app.Install (nc); apps.Start (Seconds (0.5)); Time nextEvent = Seconds (0.5); for (uint32_t cw = m_cwMin; cw = m_cwMax; cw += m_cwStep) { for (uint32_t an = 0; an m_avgs; an++) { nextEvent += m_simTime; Simulator Schedule (nextEvent, Experiment ResetData, this); Simulator Schedule (nextEvent, Experiment UpdatePositions, this, nc); } Simulator Schedule (nextEvent, Experiment IncrementCw, this, cw); } apps.Stop (nextEvent + m_simTime); Ptr Node sinkNode = sink.Get (0); TypeId psfid = TypeId LookupByName ("ns3 PacketSocketFactory"); if (sinkNode- GetObject SocketFactory (psfid) == 0) { Ptr PacketSocketFactory psf = CreateObject PacketSocketFactory (); sinkNode- AggregateObject (psf); } Ptr Socket sinkSocket = Socket CreateSocket (sinkNode, psfid); sinkSocket- Bind (socket); sinkSocket- SetRecvCallback (MakeCallback ( Experiment ReceivePacket, this)); m_bytesTotal = 0; std ofstream ascii (m_asciitracefile.c_str ()); if (!ascii.is_open ()) { NS_FATAL_ERROR ("Could not open ascii trace file " m_asciitracefile); } uan.EnableAsciiAll (ascii); Simulator Run (); sinkNode = 0; sinkSocket = 0; pos = 0; channel = 0; prop = 0; for (uint32_t i=0; i nc.GetN (); i++) { nc.Get (i) = 0; } for (uint32_t i=0; i sink.GetN (); i++) { sink.Get (i) = 0; } for (uint32_t i=0; i devices.GetN (); i++) { devices.Get (i) = 0; } for (uint32_t i=0; i sinkdev.GetN (); i++) { sinkdev.Get (i) = 0; } Simulator Destroy (); return m_data; } } ★11/28 コードを読んでいた所、ptr なる文にでくわしたのですが、何をしているかよく分からなかりませんでした。ですので、調べて見たところ、ptr はスマートポインタの宣言を表していて、スマートポインタは通常のポインタと異なり、オブジェクトが不要になったときに自動的にヒープのメモリ解放を行ってくれるポインタということのようです。ヒープメモリが何か も忘れてしまっていたので調べて見たところ、スタックは関数の実行が終わったら消される、ヒープメモリは関数の外側にあり、関数の実行が終わっても消されないもののようです。 参考: ttp //99blues.dyndns.org/blog/2010/02/auto_ptr/ ttp //www.curiocube.com/mikata/hello/ch11_heap.php Ptr T CreateObjectWithAttributesの意味 「template typename T Ptr T CreateObjectWithAttributes ( const AttributeList attributes ) [friend] Parameters attributes a list of attributes to set on the object during construction. Returns a pointer to a newly allocated object. This allocates an object on the heap and initializes it with a set of attributes. 」 uan.SetMacの解読 uanはUanHelperクラスのobjectなので、UanHelperクラスを見てみることにしました。 ns-3.15/src/uan/helper/uan-helper.cc 「void UanHelper SetMac (std string macType, std string n0, const AttributeValue v0, std string n1, const AttributeValue v1, std string n2, const AttributeValue v2, std string n3, const AttributeValue v3, std string n4, const AttributeValue v4, std string n5, const AttributeValue v5, std string n6, const AttributeValue v6, std string n7, const AttributeValue v7) { m_mac = ObjectFactory (); m_mac.SetTypeId (macType); m_mac.Set (n0, v0); m_mac.Set (n1, v1); m_mac.Set (n2, v2); m_mac.Set (n3, v3); m_mac.Set (n4, v4); m_mac.Set (n5, v5); m_mac.Set (n6, v6); m_mac.Set (n7, v7); }」 ObjectFactory()とは ObjectFactoryクラスのメソッドで、ns3 Objectのサブクラスのインスタンスを作るものです。 ☆11/29 class objectを理解したいとおもい、object.hをみてみたが、いまいち何をしているのか分からなかった。 http //detail.chiebukuro.yahoo.co.jp/qa/question_detail/q149903394 Run (UanHelper uan)では、uanが参照で渡されているから、以降の操作で中身が変化するということなのか。 ★Mobilityの部分の解読 文:Ptr ListPositionAllocator pos = CreateObject ListPositionAllocator (); ~~ pos- Add (Vector (m_boundary / 2.0, m_boundary / 2.0, m_depth)); 上文において、CreateObject()はCompleteConstruct()を使ってListPositionAllocatorクラスのオブジェクトを作成。 その後メソッドADDを使って位置ベクトルを追加。 390 template typename T 391 Ptr T CreateObject (void) 392 { 393 return CompleteConstruct (new T ()); 394 } 383 Ptr T CompleteConstruct (T *p) 384 { 385 p- SetTypeId (T GetTypeId ()); 386 p- Object Construct (AttributeConstructionList ()); 387 return Ptr T (p, false); 388 } void ns3 ListPositionAllocator Add ( Vector v) 読んでみると、ノードを作成する時に、x-y positionは乱数で散らしているが、深さは統一しているよう。また、ノードは静的であると仮定している。 その後、スケジュールメソッドが出てきた。 文:Simulator Schedule (nextEvent, Experiment ResetData, this); Q) EventId ns3 Simulator Schedule ( Time const time, MEM mem_ptr, OBJ obj ) static Schedule an event to expire at the relative time "time" is reached. This can be thought of as scheduling an event for the current simulation time plus the Time passed as a parameter When the event expires (when it becomes due to be run), the input method will be invoked on the input object. (UQ より、nextEvent時間たった時に、 Experiment ResetDataをthisに実行ということのようだ。 ResetDataはしたのようなメソッド。 Q)void Experiment ResetData () { NS_LOG_DEBUG (Simulator Now ().GetSeconds () " Resetting data"); m_throughputs.push_back (m_bytesTotal * 8.0 / m_simTime.GetSeconds ()); m_bytesTotal = 0; } (UQ 標準出力例 Mean range from gateway 166.966 min. range 72.406 Position of sink 250 250 70 1000.5 Resetting data 1000.5 Updating positions 2000.5 Resetting data 2000.5 Updating positions 3000.5 Resetting data 3000.5 Updating positions Average for cw=10 over 3 runs 10.8373 4000.5 Resetting data 4000.5 Updating positions 5000.5 Resetting data 5000.5 Updating positions 6000.5 Resetting data 6000.5 Updating positions Average for cw=20 over 3 runs 20.736 7000.5 Resetting data 7000.5 Updating position 8000.5 Resetting data 8000.5 Updating positions まだ続く 結局、初期化しながら何度かthroughputを出して平均をだし、contensiton windowのサイズをあげて。結果がどうかわるかを見ているとわかりました。ちゃんと各回にためたデータの消去もしているようです。(m_throughputs.clear ();) 今後は、fadingの取り込み方、地形効果を取り入れられるかなどに注目しつつ、既存モデルがどうやってthroughputを計算しているかをみていくつもりです。 研究としては、海中光通信モジュール開発、marine creatureの影響の考慮、も視野に入れてします。 ☆12/4 地形データを取り込んで、それが、各チャネルに及ぼす影響を計算して、各チャネルの性質を変更するようなモジュールが作りたいです。地形データの取り込み自体は、ゲームなどにも使われてるし、調べればできそうですが、それが、各チャネルにどう効いてくるかを計算するのが難しそうです。(まじめにやると地形だけでなく、物性や渦などの海洋現象も絡んできます。) ☆12/5 前回シミュレータの挙動が分かった気がしていたのですが、改めてみてみると、よく分かっていないことに気づきました。 今日重要だと思ったのは、シミュレータには、scheduling phaseとrun phaseがあって、simulationの計算自体は、Simlator Run()の後に行われているということです。 uan-cw-exampleでのscheduleは4つあって、1つ目が、0.5sから終わりまで続く、送信ノード(nc)から受信ノード(sink) へのパケット送信で、(アプリを載せています。)2つ目はresetdataがm_simTime毎に、3つ目は、updatepositionがm_simTime毎に、4つ目はincrement_cwが期待値を出す塊毎に予約されています。 これらのイベントがSimulator Run()が実行されると時間順に順々に実行されます。 ということで、UWのモデルは、アプリが何バイトのデータをsinkに送れるかの計算に使われているはずです。 (はずなのですが、プログラムでいうとどこの記述なのかがいまいち見えません。) ということで、次回はモデルがどう計算に使われているかを引き続き解読する必要があります。 ☆12/7 以下のような作業をしました。 1:root@joe-laptop ~/repos/ns-3-allinone/ns-3.15/src/uan/model# vim uan-channel.cc のtipeidメソッドに目印の標準出力を挿入しました。 2 ./waf実行したところ、結果は下の用になりました。 「root@joe-laptop ~/repos/ns-3-allinone/ns-3.15# ./waf Waf Entering directory `/home/joe/repos/ns-3-allinone/ns-3.15/build [1529/1924] cxx src/uan/model/uan-channel.cc - build/src/uan/model/uan-channel.cc.1.o [1754/1924] cxxshlib build/src/uan/model/uan-channel.cc.1.o build/src/uan/model/uan-phy-gen.cc.1.o build/src/uan/model/uan-mac.cc.1.o build/src/uan/model/uan-transducer.cc.1.o build/src/uan/model/uan-transducer-hd.cc.1.o build/src/uan/model/uan-address.cc.1.o build/src/uan/model/uan-net-device.cc.1.o build/src/uan/model/uan-tx-mode.cc.1.o build/src/uan/model/uan-prop-model.cc.1.o build/src/uan/model/uan-prop-model-ideal.cc.1.o build/src/uan/model/uan-mac-aloha.cc.1.o build/src/uan/model/uan-header-common.cc.1.o build/src/uan/model/uan-noise-model-default.cc.1.o build/src/uan/model/uan-mac-cw.cc.1.o build/src/uan/model/uan-prop-model-thorp.cc.1.o build/src/uan/model/uan-phy-dual.cc.1.o build/src/uan/model/uan-header-rc.cc.1.o build/src/uan/model/uan-mac-rc.cc.1.o build/src/uan/model/uan-mac-rc-gw.cc.1.o build/src/uan/model/uan-phy.cc.1.o build/src/uan/model/uan-noise-model.cc.1.o build/src/uan/model/acoustic-modem-energy-model.cc.1.o build/src/uan/helper/uan-helper.cc.1.o build/src/uan/helper/acoustic-modem-energy-model-helper.cc.1.o - build/libns3.15-uan-debug.so [1766/1924] cxxprogram build/src/uan/examples/uan-rc-example.cc.2.o - build/src/uan/examples/ns3.15-uan-rc-example-debug [1786/1924] cxxshlib build/src/uan/test/uan-test.cc.3.o build/src/uan/test/uan-energy-model-test.cc.3.o - build/libns3.15-uan-test-debug.so [1807/1924] cxxprogram build/src/uan/examples/uan-cw-example.cc.1.o - build/src/uan/examples/ns3.15-uan-cw-example-debug [1861/1924] cxxshlib build/src/netanim/model/animation-interface.cc.1.o build/src/netanim/helper/animation-interface-helper.cc.1.o - build/libns3.15-netanim-debug.so [1863/1924] cxxshlib build/src/point-to-point-layout/model/point-to-point-dumbbell.cc.1.o build/src/point-to-point-layout/model/point-to-point-grid.cc.1.o build/src/point-to-point-layout/model/point-to-point-star.cc.1.o - build/libns3.15-point-to-point-layout-debug.so [1863/1924] cxxshlib build/src/csma-layout/model/csma-star-helper.cc.1.o - build/libns3.15-csma-layout-debug.so [1864/1924] cxxprogram build/src/netanim/examples/uan-animation.cc.5.o - build/src/netanim/examples/ns3.15-uan-animation-debug [1865/1924] cxxprogram build/src/netanim/examples/wireless-animation.cc.4.o - build/src/netanim/examples/ns3.15-wireless-animation-debug [1866/1924] cxxprogram build/examples/matrix-topology/matrix-topology.cc.1.o - build/examples/matrix-topology/ns3.15-matrix-topology-debug [1867/1924] cxxshlib build/src/netanim/test/netanim-test.cc.3.o - build/libns3.15-netanim-test-debug.so [1868/1924] cxxprogram build/src/csma-layout/examples/csma-star.cc.1.o - build/src/csma-layout/examples/ns3.15-csma-star-debug [1869/1924] cxxshlib - build/libns3.15-test-debug.so [1870/1924] cxxprogram build/src/netanim/examples/star-animation.cc.3.o - build/src/netanim/examples/ns3.15-star-animation-debug [1871/1924] cxxprogram build/src/network/examples/droptail_vs_red.cc.4.o - build/src/network/examples/ns3.15-droptail_vs_red-debug [1872/1924] cxxprogram build/src/netanim/examples/grid-animation.cc.2.o - build/src/netanim/examples/ns3.15-grid-animation-debug [1873/1924] cxxprogram build/examples/tcp/star.cc.5.o - build/examples/tcp/ns3.15-star-debug [1874/1924] cxxprogram build/src/netanim/examples/dynamic_linknode.cc.6.o - build/src/netanim/examples/ns3.15-dynamic_linknode-debug [1875/1924] cxxprogram build/src/netanim/examples/dumbbell-animation.cc.1.o - build/src/netanim/examples/ns3.15-dumbbell-animation-debug [1876/1924] cxxshlib build/src/stats/bindings/ns3module.cc.7.o - build/bindings/python/ns/stats.so [1877/1924] cxxshlib build/src/uan/bindings/ns3module.cc.7.o - build/bindings/python/ns/uan.so [1878/1924] cxxshlib build/src/csma/bindings/ns3module.cc.5.o - build/bindings/python/ns/csma.so [1879/1924] cxxshlib build/src/dsr/bindings/ns3module.cc.7.o - build/bindings/python/ns/dsr.so [1880/1924] cxxprogram build/scratch/myfirst.cc.4.o - build/scratch/myfirst [1881/1924] cxxshlib build/src/virtual-net-device/bindings/ns3module.cc.5.o - build/bindings/python/ns/virtual_net_device.so [1882/1924] cxxshlib build/src/wimax/bindings/ns3module.cc.7.o - build/bindings/python/ns/wimax.so [1883/1924] cxxprogram build/scratch/second.cc.2.o - build/scratch/second [1884/1924] cxxshlib build/src/core/bindings/ns3module.cc.8.o build/src/core/bindings/module_helpers.cc.8.o - build/bindings/python/ns/_core.so [1885/1924] cxxprogram build/scratch/subdir/scratch-simulator-subdir.cc.6.o - build/scratch/subdir/subdir [1886/1924] cxxshlib build/src/test/csma-system-test-suite.cc.4.o build/src/test/global-routing-test-suite.cc.4.o build/src/test/static-routing-test-suite.cc.4.o build/src/test/error-model-test-suite.cc.4.o build/src/test/mobility-test-suite.cc.4.o build/src/test/ns3wifi/wifi-interference-test-suite.cc.4.o build/src/test/ns3wifi/wifi-msdu-aggregator-test-suite.cc.4.o build/src/test/ns3tcp/ns3tcp-cwnd-test-suite.cc.4.o build/src/test/ns3tcp/ns3tcp-interop-test-suite.cc.4.o build/src/test/ns3tcp/ns3tcp-loss-test-suite.cc.4.o build/src/test/ns3tcp/ns3tcp-no-delay-test-suite.cc.4.o build/src/test/ns3tcp/ns3tcp-socket-test-suite.cc.4.o build/src/test/ns3tcp/ns3tcp-state-test-suite.cc.4.o build/src/test/ns3tcp/nsctcp-loss-test-suite.cc.4.o build/src/test/ns3tcp/ns3tcp-socket-writer.cc.4.o - build/libns3.15-test-test-debug.so [1887/1924] cxxshlib build/src/network/bindings/ns3module.cc.7.o - build/bindings/python/ns/network.so [1888/1924] cxxshlib build/src/lte/bindings/ns3module.cc.7.o - build/bindings/python/ns/lte.so [1889/1924] cxxprogram build/scratch/scratch-simulator.cc.1.o - build/scratch/scratch-simulator [1890/1924] cxxshlib build/src/internet/bindings/ns3module.cc.7.o - build/bindings/python/ns/internet.so [1891/1924] cxxshlib build/src/antenna/bindings/ns3module.cc.7.o - build/bindings/python/ns/antenna.so [1892/1924] cxxshlib build/src/energy/bindings/ns3module.cc.7.o - build/bindings/python/ns/energy.so [1893/1924] cxxshlib build/src/mobility/bindings/ns3module.cc.7.o - build/bindings/python/ns/mobility.so [1894/1924] cxxshlib build/src/tools/bindings/ns3module.cc.7.o - build/bindings/python/ns/tools.so [1895/1924] cxxshlib build/src/config-store/bindings/ns3module.cc.5.o - build/bindings/python/ns/config_store.so [1896/1924] cxxshlib build/src/dsdv/bindings/ns3module.cc.7.o - build/bindings/python/ns/dsdv.so [1897/1924] cxxshlib build/src/bridge/bindings/ns3module.cc.5.o - build/bindings/python/ns/bridge.so [1898/1924] cxxshlib build/src/buildings/bindings/ns3module.cc.7.o - build/bindings/python/ns/buildings.so [1899/1924] cxxshlib build/src/flow-monitor/bindings/ns3module.cc.7.o - build/bindings/python/ns/flow_monitor.so [1900/1924] cxxshlib build/src/topology-read/bindings/ns3module.cc.7.o - build/bindings/python/ns/topology_read.so [1901/1924] cxxprogram build/scratch/test1.cc.5.o - build/scratch/test1 [1902/1924] cxxprogram build/utils/print-introspected-doxygen.cc.4.o - build/utils/ns3.15-print-introspected-doxygen-debug [1903/1924] cxxshlib build/src/mpi/bindings/ns3module.cc.5.o - build/bindings/python/ns/mpi.so [1904/1924] cxxprogram build/scratch/mythird.cc.3.o - build/scratch/mythird [1905/1924] cxxshlib build/src/olsr/bindings/ns3module.cc.7.o - build/bindings/python/ns/olsr.so [1906/1924] cxxshlib build/src/tap-bridge/bindings/ns3module.cc.6.o - build/bindings/python/ns/tap_bridge.so [1907/1924] cxxshlib build/src/mesh/bindings/ns3module.cc.7.o - build/bindings/python/ns/mesh.so [1908/1924] cxxshlib build/src/spectrum/bindings/ns3module.cc.7.o - build/bindings/python/ns/spectrum.so [1909/1924] cxxshlib build/src/aodv/bindings/ns3module.cc.7.o - build/bindings/python/ns/aodv.so [1910/1924] cxxshlib build/src/emu/bindings/ns3module.cc.6.o - build/bindings/python/ns/emu.so [1911/1924] cxxshlib build/src/applications/bindings/ns3module.cc.7.o - build/bindings/python/ns/applications.so [1912/1924] cxxshlib build/src/point-to-point-layout/bindings/ns3module.cc.5.o - build/bindings/python/ns/point_to_point_layout.so [1913/1924] cxxshlib build/src/nix-vector-routing/bindings/ns3module.cc.5.o - build/bindings/python/ns/nix_vector_routing.so [1914/1924] cxxshlib build/src/wifi/bindings/ns3module.cc.7.o - build/bindings/python/ns/wifi.so [1915/1924] cxxshlib build/src/point-to-point/bindings/ns3module.cc.7.o - build/bindings/python/ns/point_to_point.so [1916/1924] cxxshlib build/src/csma-layout/bindings/ns3module.cc.5.o - build/bindings/python/ns/csma_layout.so [1917/1924] cxxshlib build/src/propagation/bindings/ns3module.cc.7.o - build/bindings/python/ns/propagation.so [1918/1924] cxxprogram build/utils/test-runner.cc.1.o - build/utils/ns3.15-test-runner-debug Waf Leaving directory `/home/joe/repos/ns-3-allinone/ns-3.15/build build finished successfully (37.991s) 」 3 ./waf --run src/uan/examples/uan-cw-example を実行するとちゃんと、シミュレーション結果の出力の前に挿入標準出力が出てました。ですので、uan-channel.ccはこのプログラムのチャネル計算に使われていることがわかりました。 4 次にuan-noise-model-default.cc にも標準出力を入れてみた simulation結果は下の用になりました。 「(省略) noise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyonoise desuyo120000 Resetting data 120000 Updating positions Average for cw=400 over 3 runs 38.912 」 やはり、uan-noise-model-default.ccは各simulationのアプリケーションでの計算に使われていてアプリケーションが送ったパケットがどの程度到達するかを決めているようです。 5 uan-noise-model-default.ccのノイズモデルを適当に変えてみました。具体的には、ノイズの値を100倍にしてみた。すると、スループットが0になりました。 疑問:ノイズがどうパケット到達の計算に使われているのかはどこに書いてあるかわかりません。100倍にしたら0になったというだけじゃ計算の仕方は全く分かりません。 ☆12/10 スループットの計算をどうやっているのかを探ろうと考え、デバッグしようとしたのだがうまくいきませんでした。ですので、tutorialでログの出力について記述が合ったのを思い出したので、読み返してみました。 結局 export NS_LOG=*=level_all|prefix_func|prefix_time で詳細な出力が出るようになるので、 ./waf --run src/uan/examples/uan-cw-example log.out 2 1 でログを出せば詳細な挙動が分かるようです。 (設定を元に戻すには、export NS_LOG= で大丈夫です。) 実際、送信ノード1個、平均取らず、contention window変えないという条件でログを出力しました。 「 3.7s UanMacCw Enqueue() Time 3.7 Addr 02-01-00 Enqueuing new packet while idle (sending) 3.7s UanPhyGen SendPacket() PHY 02-01-00 Transmitting packet 3.7s UanTransducerHd Transmit() Transducer transmitting TX delay = +3500000000.0ns seconds for packet size 35 bytes and rate = 80 bps 3.7s UanChannel TxPacket() Channel scheduling 3.7s UanChannel TxPacket() Scheduling 02-01-01 3.7s UanChannel TxPacket() txPowerDb=190dB, rxPowerDb=190dB, distance=165.012m, delay=+110008279.0ns 」 ここら辺がUANモデルを使ってパケット到達性を計算しているところだと推測されます。 「512 UanPhyGen SendPacket (Ptr Packet pkt, uint32_t modeNum) 513 { 514 NS_LOG_DEBUG ("PHY " m_mac- GetAddress () " Transmitting packet"); 515 if (m_disabled) 516 { 517 NS_LOG_DEBUG ("Energy depleted, node cannot transmit any packet. Dropping."); 518 return; 519 } 520 521 if (m_state == TX) 522 { 523 NS_LOG_DEBUG ("PHY requested to TX while already Transmitting. Dropping packet."); 524 return; 525 } 526 else if (m_state == SLEEP) 527 { 528 NS_LOG_DEBUG ("PHY requested to TX while sleeping. Dropping packet."); 529 return; 530 } 531 532 UanTxMode txMode = GetMode (modeNum); 533 534 if (m_pktRx != 0) 535 { 536 m_minRxSinrDb = -1e30; 537 m_pktRx = 0; 538 } 539 540 m_transducer- Transmit (Ptr UanPhy (this), pkt, m_txPwrDb, txMode); 541 m_state = TX; 542 UpdatePowerConsumption (TX); 543 double txdelay = pkt- GetSize () * 8.0 / txMode.GetDataRateBps (); 544 Simulator Schedule (Seconds (txdelay), UanPhyGen TxEndEvent, this); 545 NS_LOG_DEBUG ("PHY " m_mac- GetAddress () " notifying listeners"); 546 NotifyListenersTxStart (Seconds (txdelay)); 547 m_txLogger (pkt, m_txPwrDb, txMode); 548 }」 UanMacCw SendPacket() :これも気になります。 12/11 3.81001s UanPhyGen CalcSinrDb() Calculating SINR RxPower = 190 dB. Number of interferers = 1 Interference + noise power = 54.3837 dB. SINR = 135.616 dB. 3.81001s UanPhyGen StartRxPacket() PHY 02-01-01 Starting RX in IDLE mode. SINR = 135.616 ここでSINRの計算してるみたいです。 CalcSinrDb()の説明のなかで、modeという変数が出てきて、これが何を意図しているのかよくわからなかったのですが、uan-cwプログラムを見ると、 「 mode = UanTxModeFactory CreateMode (UanTxMode FSK, exp.m_dataRate, exp.m_dataRate, 12000, exp.m_dataRate, 2, "Default mode"); 」 などという形で出てきていて、調べて見ると、modulationの仕方や、使用音波の中心周波数、バンド幅などを決めていると分かりました。 標準のPER,SINRのモデルはどうなっているのか気になったので調べてみました。(いろいろ海中音波のモデルがあっても結局PERとSINRの値に落とし込んでいるのではないかと推測したので。) 「 ns3 UanPhyPerGenDefault Class Reference Default Packet Error Rate calculator for UanPhyGen Considers no error if SINR is user defined threshold (configured by an attribute). ns3 UanPhyCalcSinrDefault Class Reference Default SINR calculator for UanPhyGen The default ignores mode data and assumes that all rxpower transmitted is captured by the receiver, and that all signal power associated with interfering packets affects SINR identically to additional ambient noise. 」 transducerが何をしているのかよくわかりません。 「3.81001s UanTransducerHd Receive() 3.81001 Transducer in receive 3.81001s UanTransducerHd Receive() Transducer state = RX 3.81001s UanTransducerHd Receive() Calling StartRx」 「 7.31001s Node NonPromiscReceiveFromDevice(0x8e90520) 7.31001s Node ReceiveFromDevice() Node 1 ReceiveFromDevice dev 0 (type=ns3 UanNetDevice) Packet UID 0 7.31001s PacketSocket ForwardUp(0x8e918a0, 0x8e90b10, 0x8e914d0, 0, 02-01-00, 02-01-01, 0) 14.0972s Node NonPromiscReceiveFromDevice(0x8e90520) 14.0972s Node ReceiveFromDevice() Node 1 ReceiveFromDevice dev 0 (type=ns3 UanNetDevice) Packet UID 1 14.0972s PacketSocket ForwardUp(0x8e918a0, 0x8e90b10, 0x8e94380, 0, 02-01-00, 02-01-01, 0)」 パケット受け取りを表しているのは、このふたつのようです。(標準出力してみたところ受け取ったパケットは2個でしたし。) ☆12/12 より詳細なデバッグができると期待してD-trace installをinstallして使ってみようと試みましたが、うまく使えませんでした。 以下取った行動のログです。 1:d-traceの最新版をダウンロードしました。(ftp //crisp.dyndns-server.com/pub/release/website/dtrace/にて) 2: bunzip2 dtrace-20121210.tar.bz2 | tar xvf - sudo apt-get install bison sudo apt-get install flex sudo apt-get install zlib1g-dev sudo apt-get install libelf-dev cd dtrace-20110120 make all sudo make install sudo make load 3:エラーが出たので tools/get-deps.plを実行 to ensure everything is needed or a build. 参考:http //askubuntu.com/questions/60940/how-do-i-install-dtrace この後、 http //gihyo.jp/dev/serial/01/dtrace4cpg/0001?page=2 を参考にしながら、お試し的なd-scriptとやらを実行してみましたが、 「dtrace failed to compile script ./test.d line 1 probe description pid6494 ls entry does not match any probes 」 などとエラーが出て駄目でした。時間のむだな気がしてきたので、とりあえずd-traceは保留することにしました。 ☆12/12 NS3_UAN関連 OnOffaApplicationの詳細な説明を読みました 次にログを見ていく作業を行いました。今回は、0.5sに何が起こっているかを解読しました。送信ノード数が1つの場合と4つの場合のログを見比べることで、 「0.5s OnOffApplication StartApplication() ~ 0.5s DefaultSimulatorImpl ProcessOneEvent() handle 1500000000」 が一塊で、一つの送信ノードについて、パケット送信アプリの設定をしていることが分かりました。(詳しくは、ネットワークデバイスとプロトコルの結び付け、パケットの目的地の設定等) ただ、いろいろ細かいところはまだわかりません。目的地の値が毎回変わってるのはなぜなのでしょうか。 仮説:単に受信ノードに複数のネットワークデバイスがのっていて、各送信ノードとの間でのパケットのやり取りには別個のネットワークデバイスを使っている PacketSocket ShutdownRecv (void):Do not allow any further Recv calls. This method is typically implemented for Tcp sockets by a half close. は、今設定している相手以外のパケットは受け取らないということですかね。 ☆12/13 今回は、uan-noise-model-default.ccのetNoiseDbHz (fKhz)がどう計算に結びついているのかさっぱりなので、それをたどってみることにしました。 「 double UanChannel GetNoiseDbHz (double fKhz) { NS_ASSERT (m_noise); double noise = m_noise- GetNoiseDbHz (fKhz); return noise; } 」 まずはここで使われているようです。この関数自体は、UanPhyGen CalculateSinrDbに参照されていて、また、UanPhyGen CalculateSinrDbは、UanPhyGen StartRxPacketに参照されているようです。 どうも、UanPhyGen CalculateSinrDbがsinrを計算する、割と肝な関数のようです。こいつが呼び出しているのは、 UanPhyCalcSinr CalcSinrDb UanTransducer GetArrivalList ←干渉の計算に使う。到達音波の数を求める。 UanTxMode GetCenterFreqHz UanTxMode GetBandwidthHz UanChannel GetNoiseDbH の5つの関数です。 ノイズをUanChannel GetNoiseDbH及びバンド幅から計算してメインのsinrの計算はUanPhyCalcSinr CalcSinrDbに任せているようです。 「UanPhyCalcSinrDefault CalcSinrDb (Ptr Packet pkt, 72 Time arrTime, 73 double rxPowerDb, 74 double ambNoiseDb, 75 UanTxMode mode, 76 UanPdp pdp, 77 const UanTransducer ArrivalList arrivalList) const 78 { 79 if (mode.GetModType () == UanTxMode OTHER) 80 { 81 NS_LOG_WARN ("Calculating SINR for unsupported modulation type"); 82 } 83 84 double intKp = -DbToKp (rxPowerDb); // This packet is in the arrivalList 85 UanTransducer ArrivalList const_iterator it = arrivalList.begin (); 86 for (; it != arrivalList.end (); it++) 87 { 88 intKp += DbToKp (it- GetRxPowerDb ()); 89 } 90 91 double totalIntDb = KpToDb (intKp + DbToKp (ambNoiseDb)); 92 93 NS_LOG_DEBUG ("Calculating SINR RxPower = " rxPowerDb " dB. Number of interferers = " arrivalList.size () " Interference + noise power = " totalIntDb " dB. SINR = " rxPowerDb totalIntDb " dB."); 94 return rxPowerDb - totalIntDb; 95 }」 DbToKpなどは単に単位変換しているだけの関数です。arribal listが現在そのノードを通過しているパケットを表しているので、自分自身を除いた通過パケットの受信電力の和を干渉値にしているということのようです。(干渉の計算はこれでいいのですかね。multipath fadingはここで考えてることになってるのでしょうか。) 参考: 「GetArrivalList ( void ) const pure virtual Returns List of all packets currently crossing this node in the water. 」 「UanPacketArrival GetRxPowerDb ( void ) const inline Returns Received signal strength in dB re 1uPa 」 memo ambient noise=環境ノイズ ☆次回やること UanPhyGen StartRxPacketのやってること把握したいです。 ☆12/14 今回は UanPhyGen StartRxPacketが何をしているのか探ります。 「 579 void 580 UanPhyGen StartRxPacket (Ptr Packet pkt, double rxPowerDb, UanTxMode txMode, UanPdp pdp) 581 { 582 if (m_disabled) 583 { 584 NS_LOG_DEBUG ("Energy depleted, node cannot receive any packet. Dropping."); 585 NotifyRxDrop(pkt); // traced source netanim 586 return; 587 } 588 589 switch (m_state) 590 { 591 case TX 592 NotifyRxDrop(pkt); // traced source netanim 593 NS_ASSERT (false); 594 break; 595 case RX 596 { 597 NS_ASSERT (m_pktRx); 598 double newSinrDb = CalculateSinrDb (m_pktRx, m_pktRxArrTime, m_rxRecvPwrDb, m_pktRxMode, m_pktRxPdp); 599 m_minRxSinrDb = (newSinrDb m_minRxSinrDb) ? newSinrDb m_minRxSinrDb; 600 NS_LOG_DEBUG ("PHY " m_mac- GetAddress () " Starting RX in RX mode. SINR of pktRx = " m_minRxSinrDb); 601 NotifyRxBegin(pkt); // traced source netanim 602 } 603 break; 604 605 case CCABUSY 606 case IDLE 607 { 608 NS_ASSERT (!m_pktRx); 609 bool hasmode = false; 610 for (uint32_t i = 0; i GetNModes (); i++) 611 { 612 if (txMode.GetUid () == GetMode (i).GetUid ()) 613 { 614 hasmode = true; 615 break; 616 } 617 } 618 if (!hasmode) 619 { 620 break; 621 } 622 623 624 double newsinr = CalculateSinrDb (pkt, Simulator Now (), rxPowerDb, txMode, pdp); 625 NS_LOG_DEBUG ("PHY " m_mac- GetAddress () " Starting RX in IDLE mode. SINR = " newsinr); 626 if (newsinr m_rxThreshDb) 627 { 628 m_state = RX; 629 UpdatePowerConsumption (RX); 630 NotifyRxBegin(pkt); // traced source netanim 631 m_rxRecvPwrDb = rxPowerDb; 632 m_minRxSinrDb = newsinr; 633 m_pktRx = pkt; 634 m_pktRxArrTime = Simulator Now (); 635 m_pktRxMode = txMode; 636 m_pktRxPdp = pdp; 637 double txdelay = pkt- GetSize () * 8.0 / txMode.GetDataRateBps (); 638 Simulator Schedule (Seconds (txdelay), UanPhyGen RxEndEvent, this, pkt, rxPowerDb, txMode); 639 NotifyListenersRxStart (); 640 } 641 642 } 643 break; 644 case SLEEP 645 NS_LOG_DEBUG ("Sleep mode. Dropping packet."); 646 NotifyRxDrop(pkt); // traced source netanim 647 break; 648 } 649 650 if (m_state == IDLE GetInterferenceDb ( (Ptr Packet ) 0) m_ccaThreshDb) 651 { 652 m_state = CCABUSY; 653 NotifyListenersCcaStart (); 654 } 655 656 } 」 結局ノードの状態により場合分けして、IDLE状態だったら、SINRの値が閾値を超えていればreceive modeに入るようです。 UanPhyGen RxEndEventは受信終了を行う関数で、 m_pktRx(受信パケットへのポインタ)の初期化や、m_state(ノードの状態)の変更を行っているようです。 疑問: m_rxThreshDbの初期値がどこで決められている? 結局total receive bytesはどう計算されているのかと思い、改めてサンプルプログラムを見てみると、どうもプログラム中では、Socket Recvによってのみその値が変化しているらしいことが分かった。 「Ptr Packet ns3 Socket Recv ( void ) Read a single packet from the socket.」 ソケットは、UanPhyGen StartRxPacketとどう絡んでいるのでしょうか? ☆12/15 目標:サンプルプログラムでの受信パケットの量の計算が結局どういう仕組みでもたらされているかを知る 「void ns3 Socket SetRecvCallback (Callback void, Ptr Socket receivedData) Notify application when new data is available to be read. This callback is intended to notify a socket that would have been blocked in a blocking socket model that data is available to be read.」 「 112 void 113 Socket SetRecvCallback (Callback void, Ptr Socket receivedData) 114 { 115 NS_LOG_FUNCTION_NOARGS (); 116 m_receivedData = receivedData; 117 }」 NS_LOG_FUNCTION_NOARGSはOutput the name of the functionということのようです。 m_receivedDataは、Callback void, Ptr Socket ns3 Socket m_receivedData。コールバック変数ということのようです。 「 501 template typename T, typename OBJ, typename R 502 Callback R MakeCallback (R (T *memPtr)(void), OBJ objPtr) { 503 return Callback R (objPtr, memPtr); 504 }」 Callbackが何かを忘れていたので復習しました。発想としては、関数の引数に関数を使うということのようです。 今までスルーしてきた、thisの意味を大雑把に理解しました。どうやらメンバ関数を呼び出したオブジェクト自体を指すようです。 ですので、 「sinkSocket- SetRecvCallback (MakeCallback ( Experiment ReceivePacket, this));」 は、sinkSocketオブジェクトがserRecvCallbackを実行し、その中身は、makecallbackというコールバック用の関数をコールバック変数m_receiveddataに登録するこ とで、makecallbackという関数は、sinksocketオブジェクトを引数にしたexperiment receivepacketを実行する関数であるということのようです。 Experiment ReceivePacketにログを仕込んで詳細ログ(名前:log3.out)をとってみると、 11.2693s UanCwExample ReceivePacket() joe s debug m_bytestotal 32 24.9719s UanCwExample ReceivePacket() joe s debug m_bytestotal 32 29.2473s UanCwExample ReceivePacket() joe s debug m_bytestotal 64 36.8215s UanCwExample ReceivePacket() joe s debug m_bytestotal 96 みたいな感じになりました。 ☆次やること m_receivedDataがどこで使われているのかがよくわからないので調べたいです。それがわからないと受信の処理が結局どうなっているかわからないので。 UanPhyGen StartRxPacketを誰が呼び出しているか、パケット送信の詳細、伝搬の詳細を明らかにします。 =================================================================================================================================================================================================== (3)今後の予定 (2)ではパケットロスの大雑把な仕組みを知ったと書いたのですが、そもそもノードの受信行動が何にトリガーされるのかや、パケット送信のプロセスはどうなっているのか、また伝搬の計算はどうなっているかについてまだ分かっていません。ですので、引き続き、関数ドキュメント、ソースコード、ログを見ながらNS3-UANの構造の理解をしていきたいと考えています。 しっかりと理解ができたら、その後地形効果を取り入れるプログラムを書いていくつもりです。
https://w.atwiki.jp/www2www/pages/18.html
inclulde/wgx/wgd/ISystemDevice.h namespace wgx wgdに所属 ハードウェアとプログラムの仲介 0.1での仕様 SystemDevice一個につきひとつのVideoDeviceをもつ initVideoDeviceでウィンドウを生成する